使用参数在DB2中的存储过程中添加两行计数
问题描述:
我想创建一个存储过程,它使用select来获取两个表中的行数,然后打印出结果。使用参数在DB2中的存储过程中添加两行计数
CREATE PROCEDURE TEST(IN tab1 varchar(20), IN tab2 varchar(20), out msg INTEGER)
LANGUAGE SQL
READS SQL DATA
BEGIN
DECLARE r1 CURSOR WITH RETURN FOR
SELECT COUNT(*) FROM tab1;
DECLARE r2 CURSOR WITH RETURN FOR
SELECT COUNT(*) FROM tab2;
OPEN r1;
OPEN r2;
---- somehow add the 2 together -----
CALL DBMS_OUTPUT.PUT('Zeilen = ');
CALL DBMS_OUTPUT.PUT_LINE(msg);
END @
我更新了全部代码添加游标,因为一个选择(可变)=东西似乎并不像
SELECT tableOneCount = (SELECT COUNT(*) FROM tab1);
工作,但现在的问题是,在创建过程出现错误该tab1是未知的,这是显而易见的,因为它是一个变量,我不知道如何添加2个游标。
任何想法?
在此先感谢。
TheVagabond
答
正如@mustaccio说,你应该使用变量
DECLARE QTY INTEGER;
SET QTY = (SELECT COUNT(*) FROM tab1);
'SELECT'不指定变量值你要做到这一点,而不是在DB2反正路的方式。此外,你不能使用变量作为对象名称 - 谷歌的“动态SQL”。 – mustaccio 2014-10-10 13:07:06