【问题标题】:How to return the number of affected rows in a HANA stored procedure?如何返回 HANA 存储过程中受影响的行数?
【发布时间】:2014-07-02 01:54:57
【问题描述】:

在 SAP HANA 存储过程中,如何返回受插入或更新语句影响的行数?

在 oracle 中有人会使用 sql%rowcount,但我在他们的文档中找不到 HANA 的等效项?

例如:

CREATE PROCEDURE procedure_name (p_input)
LANGUAGE SQLSCRIPT AS
BEGIN
   define c integer;
   insert into some_table values (somevalues);
   c := sql%rowcount;
END

更新:

我终于在一个 SAP 线程上找到了答案。您可以在插入或更新后运行此语句以获取行数:

SELECT ::ROWCOUNT into L_C FROM DUMMY;

【问题讨论】:

    标签: sql hana


    【解决方案1】:

    不是试图窃取互联网积分,但这应该有一个不仅仅是在问题描述中的答案。要选择行数,请使用以下命令:

    SELECT ::ROWCOUNT INTO someVariable FROM DUMMY;
    

    DUMMY 是 HANA 中的一个特殊关键字,用于选择变量与从表中选择。您不能在 HANA 中简单地 SELECT ::ROWCOUNT INTO someVariable

    【讨论】:

    • DUMMY 不是关键字,而是预交付的辅助表。它用于生成单个元组,几乎与使用 Oracle 的 DUAL 表的方式相同。对于当前版本(HANA 1 >=SP12 和 HANA 2),通常可以通过简单的赋值来避免在 SQLScript 中使用 DUMMY,例如i = ::ROWCOUNT;
    【解决方案2】:

    ::ROWCOUNT 是系统变量,是否存在问题,因此多个会话同时使用它可能会产生不正确的结果?

    【讨论】:

    • 这不是一个答案,而是一个额外的问题 - 可能应该是一个评论......无论如何,虽然 ::ROWCOUNT 是一个系统变量,但这并不意味着它只是相同的变量值系统。那将毫无用处,不是吗?相反,它的值是本地会话。因此,您的会话将看到与其他会话不同的值。
    • 不幸的是,我没有足够的声誉发表评论。感谢您的澄清!
    猜你喜欢
    • 2018-10-21
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    相关资源
    最近更新 更多