如何查找插入sql表的记录数

时间:2014-06-09 04:34:03

标签: sql database db2

我在侧存储过程中运行了以下sql语句。此查询将数据插入TABLE_AB,这些数据从AAA和BBB表重试。当这个过程运行时,我想找出插入TABLE_AB的记录数。如果没有包含数据,我想现在返回匹配数据,发现插入TABLE_AB。任何人都可以帮助理解如何完成它。在此先感谢您的任何帮助

INSERT INTO TABLE_AB (X,Y,Z, TOTAL_CNT, TOTAL_AMT)
SELECT X,Y,Z, TOTAL_CNT, TOTAL_AMT
FROM(

SELECT A.X, A.Y, A.Z , COUNT(1), SUM(AMT)
FROM AAA A WHERE A.X = 1 
GROUP BY A.X, A.Y, A.Z 
UNION ALL

SELECT B.X, B.Y, B.Z , COUNT(1), SUM(AMT)
FROM BBB B WHERE A.X = 1 
GROUP BY B.X, B.Y, B.Z

) AS AB
GROUP BY AB.X, AB.Y , AB.Z

2 个答案:

答案 0 :(得分:0)

使用SQL%ROWCOUNT,您可以实现此目的。 SQL%ROWCOUNT返回受上次成功执行的DML影响的行数。

用法:

DECLARE
  V_COUNT number;

BEGIN

INSERT INTO TABLE_AB (X,Y,Z, TOTAL_CNT, TOTAL_AMT)
SELECT X,Y,Z, TOTAL_CNT, TOTAL_AMT
FROM(

SELECT A.X, A.Y, A.Z , COUNT(1) TOTAL_CNT, SUM(AMT) TOTAL_AMT
FROM AAA A WHERE A.X = 1 
GROUP BY A.X, A.Y, A.Z 
UNION ALL

SELECT B.X, B.Y, B.Z , COUNT(1), SUM(AMT)
FROM BBB B WHERE A.X = 1 
GROUP BY B.X, B.Y, B.Z

) ;

v_number := sql%rowcount;

DBMS_OUTPUT.PUT_LINE(v_number );

END;
/

PS:这是针对Oracle的。

答案 1 :(得分:0)

显然答案是“否”,但是如果您知道已插入一些标识符,则可以查找联接并检查时间,甚至删除它们。