如何获取 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;
所以让我在过程中有 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;