2014-10-10 57 views
0

我想创建一个存储过程,它使用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

+1

'SELECT'不指定变量值你要做到这一点,而不是在DB2反正路的方式。此外,你不能使用变量作为对象名称 - 谷歌的“动态SQL”。 – mustaccio 2014-10-10 13:07:06

回答

1

正如@mustaccio说,你应该使用变量

DECLARE QTY INTEGER; 
SET QTY = (SELECT COUNT(*) FROM tab1);