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

Men*_*des 4 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();
Run Code Online (Sandbox Code Playgroud)

我需要将它移植到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();
Run Code Online (Sandbox Code Playgroud)

该代码给我以下错误:

参数化查询需要未提供的参数:@returnedId

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

我试过OUTPUT Inserted.Id As @returnedId,以及改变SqlParameter"@returnedId"没有成功.

pot*_*hin 5

OUTPUT SQL Server相当于 RETURNING INTO.

INSERT INTO table_name (ID, NAME, GENDER) 
OUTPUT INSERTED.ID 
VALUES (1, 'JOHN', 'M') ;
Run Code Online (Sandbox Code Playgroud)

C#:

Int32 outputID = (Int32)command.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

  • 工作.谢谢. (2认同)