c# - 如何使用 ExecuteScalar 从插入的行中获取生成的 ID?

标签 c# oracle ado.net

我知道在 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/

相关文章:

C#数据集方法

vb.net - ADO Entity Framework 中未映射关联端

c# - 使用 MVVM 在 TreeView 中显示实体

c# - Windows Phone 8.1 超链接按钮和保存状态

javascript - 从 Node.js 读取 Oracle 中的 BLOB

database - 甲骨文 express : Getting ORA-12154 error when trying to connect using SQL Plus

java - Oracle BPM 套件 REST 服务

c# - DataReader 如何工作?

c# - 解析包含数组和对象的json文件

c# - 使用 Linq 选择列表中的一系列成员