하나의 쿼리에 Insert + Select 문 포함 ORA-00933 : SQL 명령이 제대로 종료되지 않았습니다.

dapper oracle

문제

하나의 "run"에서 dapper로 간단한 INSERT-and-SELECT-SELECT-query를하고 싶습니다. 대략 다음과 같습니다 :

var query = "INSERT INTO Table(Id, Value) Values(1, :value);" +
            "SELECT Id, Value FROM Table WHERE Id = 1;"

Connection.Query<Item>(query, new { value = value});

그냥 ORA-00933: SQL command not properly ended . Oracle SQL Developer에서 정확히 동일한 쿼리 ( "one run", 수동으로 대체 된 params)를 실행하면 정상적으로 실행됩니다.

이것을 두 개로 나누면 다음과 같이됩니다.

var insert = "INSERT INTO Table(Id, Value) Values(1, :value);"
var select = "SELECT Id, Value FROM Table WHERE Id = 1;"

Connection.Execute(insert, new { value = value});
var item = Connection.Query<Item>(select);

... 잘 작동합니다. 나는 행운이없이 마지막 세미콜론 (다른 질문의 같았다)을 제거하려고 노력했다.

SQL Server를 사용하고있는 또 다른 프로젝트에서이 똑같은 일을 성공적으로 수행했습니다.

Dapper 1.42 사용.

아무도 여기서 무엇이 잘못된지 볼 수 있습니까?

수락 된 답변

이 시도. Insert에 "Returning into Clause"를 추가하고 출력 매개 변수를 선언하십시오.

  var param = new DynamicParameters();
param.Add(name: "IinsValue", value: value, direction: ParameterDirection.Input);
param.Add(name: "Id", dbType: DbType.Int32, direction: ParameterDirection.Output);
param.Add(name: "Value", dbType: DbType.String, direction: ParameterDirection.Output);
Connection.Execute("INSERT INTO Table(Id, Value) Values(1, :value) returning Id,Values into :id, :value", param );
var Id = param.get<int>("Id");
var Val = param.get<String>("Value");


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.