Insertar + Seleccionar instrucciones en una consulta da ORA-00933: comando SQL no finalizado correctamente

dapper oracle

Pregunta

Me gustaría hacer una simple INSERT-and-then-SELECT-it-query en una "ejecución" con dapper, más o menos así:

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});

Esto me acaba de dar ORA-00933: SQL command not properly ended . Si ejecuto exactamente la misma consulta (en "una ejecución", con los parámetros reemplazados manualmente) en Oracle SQL Developer, funciona bien.

Si dividí esto en dos, y hago esto:

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);

...funciona bien. Intenté eliminar el último punto y coma (que parecía ser una cosa en otras preguntas), sin suerte.

He hecho exactamente lo mismo con éxito en otro proyecto en el que estoy usando SQL Server.

Usando Dapper 1.42.

¿Alguien puede ver lo que está mal aquí?

Respuesta aceptada

Prueba esto. En Insertar, agregue "Regresar a la cláusula" y declare los parámetros de salida.

  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");


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué