【发布时间】:2014-06-22 11:51:58
【问题描述】:
我有以下适用于 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();
该代码给了我以下错误:
参数化查询需要未提供的参数:@returnedId
将RETURNING 和:returnedId 子句从Oracle 迁移到SQL Server 的正确方法是什么?
我尝试了OUTPUT Inserted.Id As @returnedId 以及将SqlParameter 更改为"@returnedId",但没有成功。
【问题讨论】:
标签: c# sql sql-server oracle sql-returning