【问题标题】:How to return value of identity after insert statement如何在插入语句后返回标识值
【发布时间】:2013-11-27 20:02:09
【问题描述】:

我在插入语句后返回标识值有问题。

我必须通过 OracleCommand 的 ExecuteScalar 返回这个值。我正在使用这个查询:

SET serveroutput ON
DECLARE
    returnId INT;
BEGIN
    INSERT INTO Table (
        Text
    ) VALUES (
        :Text
    ) RETURNING Id INTO returnId;

    DBMS_OUTPUT.PUT_LINE(returnId);
END;

结果:

anonymous block completed
47

我认为该值应该在列中返回,以便我可以使用 OracleCommand 的“ExecuteScalar”获取他。

如何以列格式只返回“47”?

【问题讨论】:

    标签: .net sql oracle oracle11g


    【解决方案1】:

    试试这个:

    SET serveroutput ON
    DECLARE
        returnId INT;
    BEGIN
        INSERT INTO Table (
            Text
        ) VALUES (
            :Text
        ) RETURNING Id INTO returnId;
    
        SELECT returnId INTO ReturnId FROM DUAL;
    END;
    

    【讨论】:

    • 您好,我收到以下错误:“PLS-00428:此 SELECT 语句中应有 INTO 子句”
    • 立即尝试。这将返回一个名为 ReturnId 的列。您可以将其重命名为任何名称。
    • 我在“开始/结束”块内使用。
    • 现在只返回:“匿名块已完成”。 =[
    • 糟糕。缺少分号
    猜你喜欢
    • 2013-08-02
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    相关资源
    最近更新 更多