2014-10-10 30 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);