Oracle RETURNING INTO: equivalent variable using SQL Server

I have the following code that runs on 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();

I need to port this to SQL Server. This is what I do:

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();

This code gives me the following error:

a parameterized query expects a parameter that was not specified: @returnedId

What is the proper way to transfer proposals RETURNINGand :returnedIdfrom Oracle to SQL Server?

I tried OUTPUT Inserted.Id As @returnedId, and also changed SqlParameterto "@returnedId"without success.

+4
source share
1 answer

OUTPUT is the equivalent of SQL Server BACK TO .

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

And C #:

Int32 outputID = (Int32)command.ExecuteScalar();
+4
source

Source: https://habr.com/ru/post/1539368/