Insert + Select statements in one Query<T> gives ORA-00933: SQL 命令未正确结束

Insert + Select statements in one Query<T> gives ORA-00933: SQL command not properly ended

我想用 dapper 在一个 "run" 中做一个简单的 INSERT-and-then-SELECT-it-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" 中,手动替换了参数),它 运行 没问题。

如果我把它一分为二,然后这样做:

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

...它工作正常。我试过删除最后一个分号(在其他问题中似乎是 thing),但没有成功。

我在另一个使用 SQL 服务器的项目中成功地完成了同样的事情。

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