繁体   English   中英

Oracle的RETURNING INTO:使用SQL Server的等效变量

[英]Oracle's RETURNING INTO :variable equivalent using SQL Server

我有以下适用于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"没有成功。

OUTPUTSQL Server相当于RETURNING INTO

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

C#

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM