【问题标题】:Oracle's RETURNING INTO :variable equivalent using SQL ServerOracle 的 RETURNING INTO : 使用 SQL Server 的等价变量
【发布时间】: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


    【解决方案1】:

    OUTPUTSQL Server 等效于 RETURNING INTO

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

    还有C#

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

    【讨论】:

    • 您能否详细说明一下?我已经添加了表创建但仍然无法正常工作......请记住我正在使用 C# 代码来获取 Id 数据。
    猜你喜欢
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2013-06-23
    • 2023-03-13
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多