2014-10-10 1 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 в любом случае. Кроме того, вы не можете использовать переменные в качестве имен объектов - google для «dynamic SQL». – mustaccio

ответ

1

Как @mustaccio сказал, вы должны использовать переменные

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