我想在一个“运行”中使用dapper进行简单的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中运行完全相同的查询(在“一次运行”中,手动替换了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中添加“返回子句”并声明输出参数。
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");