c# - Oracle 返回 :variable equivalent using SQL Server

标签 c# sql sql-server oracle sql-returning

我有以下适用于 Oracle 的代码:

OracleCommand command = conn.CreateCommand(); // conn is my connection

string sql = "INSERT INTO table_name (ID, NAME, GENDER) VALUES (1, 'JOHN', 'M') RETURNING ID INTO :returnedId";

command.CommandText = sql;
command.Parameters.Add(new OracleParameter("returnedId", OracleDbType.Decimal));
command.ExecuteNoQuery();

我需要将其移植到 SQL Server。这就是我正在做的:

SqlCommand command = conn.CreateCommand(); // conn is my connection

string sql = "INSERT INTO table_name (Id, Name, Gender) OUTPUT Inserted.Id As returnedId VALUES (1, "JOHN", "M")";

command.CommandText = sql;
command.Parameters.Add(new SqlParameter("returnedId", SqlDbType.Decimal));
command.ExecuteNoQuery();

该代码给我以下错误:

the parameterized query expects the parameter which was not supplied: @returnedId

RETURNING:returnedId 子句从 Oracle 迁移到 SQL Server 的正确方法是什么?

我尝试了 OUTPUT Inserted.Id As @returnedId 以及将 SqlParameter 更改为 "@returnedId" 但没有成功。

最佳答案

OUTPUT SQL Server 等同于RETURNING INTO .

INSERT INTO table_name (ID, NAME, GENDER) 
OUTPUT INSERTED.ID 
VALUES (1, 'JOHN', 'M') ;

C#:

Int32 outputID = (Int32)command.ExecuteScalar();

关于c# - Oracle 返回 :variable equivalent using SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23485002/

相关文章:

sql - sqlplus 中的 Oracle 输出

sql - 在包含万亿字节数据的 postgres 关系表上运行 select 命令

sql - 将日期范围与一组日期范围 SQL 进行比较

c# - 如何修改查询数据表的ajax url?

c# - WPF 拾色器实现

c# - HTTPS 流量的代理服务器证书

c# - 使用自定义 View 基础在 Razor View 中调用异步函数

mysql - 其中哪一个是有效的查询?

c# - NULLIF 的表达式方法(带 Divide)

sql - 如何从存储在MS SQL server表中的以下数据中获取结果集中的以下顺序?