我知道在 Oracle 中,我可以从插入的行中获取生成的 ID(或任何其他列)作为输出参数。 例如:
insert into foo values('foo','bar') returning id into :myOutputParameter
有没有办法做同样的事情,但使用 ExecuteScalar 而不是 ExecuteNonQuery?
我不想使用输出参数或存储过程。
ps:我用的是Oracle,不是sql server!!!
最佳答案
如果你在oracle上,你必须使用ExecuteNonQuery和ResultParameter。无法将其写为查询。
using (OracleCommand cmd = con.CreateCommand()) {
cmd.CommandText = "insert into foo values('foo','bar') returning id into :myOutputParameter";
cmd.Parameters.Add(new OracleParameter("myOutputParameter", OracleDbType.Decimal), ParameterDirection.ReturnValue);
cmd.ExecuteNonQuery(); // an INSERT is always a Non Query
return Convert.ToDecimal(cmd.Parameters["myOutputParameter"].Value);
}
关于c# - 如何使用 ExecuteScalar 从插入的行中获取生成的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1336911/