如何获取 teradata 中过程中最后几个 sql 语句影响的行数?

How to get number of rows affected by last several sql statement inside procedure in teradata?

所以让我在过程中有 3 个合并语句:

CREATE PROCEDURE SP_Employee(OUT num_rows BIGINT)
BEGIN
    MERGE INTO t1
         USING t2
    ...;
    MERGE INTO a1
         USING b2
    ...;
    MERGE INTO c1
         USING d2
    ...;
END;

如何获取过程中受影响的行数?我知道 ACTIVE_COUNT,但我可以使用它吗? num_rows = ACTIVE_COUNT 会起作用,还是需要多次将其添加到变量并初始设置为 0?

您可以在每次合并后插入以下内容。

Merge INTO t1
      USING t2
.....;

SET lv_activity_count = activity_count;


SET lv_message = ' Number of rows merged in table1 is  '|| lv_activity_count ;
..

请初始化并声明变量。

您需要将变量初始化为零,然后在每次执行 DML 语句后添加计数(使用 ACTIVITY_COUNT 或 GET DIAGNOSTICS ROW_COUNT):

CREATE PROCEDURE SP_Employee(OUT num_rows BIGINT)
BEGIN
   DECLARE ac BIGINT DEFAULT 0;

    MERGE INTO t1
         USING t2
    ...;
   SET ac = ac + ACTIVITY_COUNT;

    MERGE INTO a1
         USING b2
    ...;
   SET ac = ac + ACTIVITY_COUNT;

    MERGE INTO c1
         USING d2
    ...;
   SET ac = ac + ACTIVITY_COUNT;

   SET num_rows = ac;

END;