След като разгледах целия интернет, трябва да се върна на SO :).
Резюме:
Съхранената процедура на DB2 не се разгръща, когато 3 реда не са коментирани, иначе работи перфектно. Някакви предположения защо? За информация, аз съм нов в DB2.
Код на процедурата:
CREATE PROCEDURE TESTDB2.PROC_NAME_GOES_HERE(
IN P_ID INT ,
IN P_SEQ_NO_2 SMALLINT,
IN P_SEQ_NO DECIMAL(3,0))
RESULT SETS 1
LANGUAGE SQL
NOT DETERMINISTIC
CALLED ON NULL INPUT
FENCED
MODIFIES SQL DATA
COLLID TESTDB2
WLM ENVIRONMENT TDB2ENV
ASUTIME LIMIT 5000000
RUN OPTIONS 'NOTEST(NONE,*,*,*)'
P1: BEGIN
DECLARE V_SEQ_NO DECIMAL(3,0);
DECLARE V_LVL INT;
DECLARE GLOBAL TEMPORARY TABLE SESSION.SEQ_NO_TABLE
(LVL INT NOT NULL, SEQ_NO DECIMAL(3,0) NOT NULL);
SET V_LVL = 0;
INSERT INTO SESSION.SEQ_NO_TABLE(LVL, SEQ_NO)
VALUES(V_LVL, P_SEQ_NO);
--**************************************************--
-- If I uncomment following 3 lines, deployment fails --
--DECLARE CUR_FFB CURSOR WITH RETURN FOR
--SELECT * FROM SESSION.SEQ_NO_TABLE;
--OPEN CUR_FFB;
END P1
грешка:
Разположете TESTDB2.PROC_NAME_GOES_HERE(INTEGER, SMALLINT, DECIMAL(3, 0))
бягане
TESTDB2.PROC_NAME_GOES_HERE - Разполагането започна.
Извикване на помощната програма за изграждане SYSPROC.DSNTPSMP...
CONVERT SQLPRINT 1 1DB2 SQL PRECOMPILER ВЕРСИЯ 9 REL. 1.0 СТРАНИЦА 1
CONVERT SQLPRINT 2 0ПОСОЧЕНИ ОПЦИИ: STDSQL(NO) NEWFUN(YES) HOST(SQL) ONEPASS MAR(1,80) CCSID(37)
КОНВЕРТИРАНЕ НА SQLPRINT 3 DSNHDECP, ЗАРЕДЕН ОТ - (SYS2.DB2T.DSNEXIT(DSNHDECP))
КОНВЕРТИРАНЕ НА SQLPRINT 4 ИЗПОЛЗВАНИ ОПЦИИ - ПОСОЧЕНИ ИЛИ ПО ПОДРАЗБИРАНЕ
CONVERT SQLPRINT 5 APOST
КОНВЕРТИРАНЕ SQLPRINT 6 APOSTSQL
CONVERT SQLPRINT 7 ATTACH(TSO)
КОНВЕРТИРАНЕ НА SQLPRINT 8 CCSID(37)
CONVERT SQLPRINT 9 NOPADNTSTR
CONVERT SQLPRINT 10 CONNECT(2)
CONVERT SQLPRINT 11 DEC(15)
КОНВЕРТИРАНЕ НА SQLPRINT 12 FLAG(I)
CONVERT SQLPRINT 13 HOST(SQL)
КОНВЕРТИРАНЕ НА SQLPRINT 14 LINECOUNT(60)
CONVERT SQLPRINT 15 MARGINS(1,80)
КОНВЕРТИРАНЕ НА SQLPRINT 16 NEWFUN(ДА)
CONVERT SQLPRINT 17 ONEPASS
CONVERT SQLPRINT 18 ОПЦИИ
CONVERT SQLPRINT 19 ПЕРИОД
CONVERT SQLPRINT 20 NOSOURCE
CONVERT SQLPRINT 21 STDSQL(NO)
КОНВЕРТИРАНЕ SQLPRINT 22 SQL(DB2)
CONVERT SQLPRINT 23 NOXREF
CONVERT SQLPRINT 24 1DB2 SQL ПРЕДКОМПИЛАТОР СЪОБЩЕНИЯ СТРАНИЦА 2
CONVERT SQLPRINT 25 0DSNH016I E DSNHPARS LINE 26 COL 10 "GLOBAL" REQUIRED
CONVERT SQLPRINT 26 DSNH104I E DSNHPARS LINE 26 COL 10 НЕЗАКОНЕН СИМВОЛ "CUR_FFB". НЯКОИ СИМВОЛИ, КОИТО МОЖЕ ДА СА ЗАКОННИ, СА: ГЛОБАЛНИ
CONVERT SQLPRINT 27 СТРАНИЦА 3 СТАТИСТИКА НА 1DB2 SQL PRECOMPILER
CONVERT SQLPRINT 28 0СТАТИСТИКА ЗА ИЗХОДНИЦИ
CONVERT SQLPRINT 29 ИЗХОДНИ РЕДОВЕ ПРОЧЕТЕТЕ: 32
CONVERT SQLPRINT 30 БРОЙ СИМВОЛИ: 14
КОНВЕРТИРАНЕ НА SQLPRINT 31 БАЙТА СИМВОЛНА ТАБЛИЦА ИЗКЛЮЧВАНЕ НА АТРИБУТИ: 1952
CONVERT SQLPRINT 32 -ИМАШЕ 2 СЪОБЩЕНИЯ ЗА ТАЗИ ПРОГРАМА.
КОНВЕРТИРАНЕ НА SQLPRINT 33 ИМАШЕ 0 СЪОБЩЕНИЯ, ПОТИСНАТИ ОТ ОПЦИЯТА ЗА ФЛАГ.
CONVERT SQLPRINT 34 272544 БАЙТА СЪХРАНЕНИЕ БЯХА ИЗПОЛЗВАНИ ОТ ПРЕДКОМПИЛАТОРА.
КОНВЕРТИРАНЕ НА SQLPRINT 35 КОДЪТ ЗА ВРЪЩАНЕ Е 8
CONVERT SQLTERM 1 DSNH016I E DSNHPARS LINE 26 COL 10 "GLOBAL" REQUIRED
CONVERT SQLTERM 2 DSNH104I E DSNHPARS РЕД 26 COL 10 НЕЗАКОНЕН СИМВОЛ "CUR_FFB". НЯКОИ СИМВОЛИ, КОИТО МОЖЕ ДА СА ЗАКОННИ, СА: ГЛОБАЛНИ
CONVERT SQLTERM 3 CREATE PROCEDURE TESTDB2.PROC_NAME_GOES_HERE(IN P_ID INT,IN P_SEQ_NO_2 SMALLINT,IN P_SEQ_NO DECIMAL(3,0))RESULT S
КОНВЕРТИРАНЕ НА SQLTERM 4 ETS 1 ЕЗИК SQL НЕДЕТЕРМИНИСТЕН ИЗВИКАН НА NULL INPUT ОГРАНИЧЕН МОДИФИКАТОР SQL ДАННИ COLLID TESTDB2 WLM СРЕДА TDB2ENV ASUTIME
CONVERT SQLTERM 5 LIMIT 5000000 RUN OPTIONS'NOTEST(NONE,,,*)'P1 : BEGIN DECLARE V_SEQ_NO DECIMAL(3,0); DECLARE V_LVL INT; ДЕКЛАРИРАЙТЕ ГЛОБАЛНО ВРЕМЕННО
CONVERT SQLTERM 6 Y TABLE SESSION.SEQ_NO_TABLE(LVL INT NOT NULL,SEQ_NO DECIMAL(3,0)NOT NULL); SET V_LVL = 0; INSERT INTO SESSION.SEQ_NO_TABLE(LVL,S
CONVERT SQLTERM 7 EQ_NO)VALUES(V_LVL,P_SEQ_NO); ДЕКЛАРИРАЙТЕ CUR_FFB
CONVERT SQLTERM 8
CONVERT SQLTERM 9 ИЗТОЧНИ СТАТИСТИКИ
КОНВЕРТИРАНЕ НА SQLTERM 10 ИЗХОДНИ РЕДОВЕ ПРОЧЕТЕТЕ: 32
CONVERT SQLTERM 11 БРОЙ СИМВОЛИ: 14
КОНВЕРТИРАНЕ НА SQLTERM 12 СИМВОЛНИ ТАБЛИЧНИ БАЙТОВЕ ИЗКЛЮЧВАНЕ НА АТРИБУТИ: 1952
CONVERT SQLTERM 13 ИМАШЕ 2 СЪОБЩЕНИЯ ЗА ТАЗИ ПРОГРАМА.
CONVERT SQLTERM 14 ИМАШЕ 0 СЪОБЩЕНИЯ, ПОТИСНАТИ ОТ ОПЦИЯТА ЗА ФЛАГ.
CONVERT SQLTERM 15 272544 БАЙТА СЪХРАНЕНИЕ БЯХА ИЗПОЛЗВАНИ ОТ ПРЕДКОМПИЛАТОРА.
КОНВЕРТИРАНЕ НА SQLTERM 16 КОДЪТ ЗА ВРЪЩАНЕ Е 8
DSNTPSMP CONSOLE 1 * DB2 V9R1 SQL Процедурен процесор DSNTPSMP 1.21 (PM09148 2010-03-23)
DSNTPSMP CONSOLE 2 Предупреждения и/или грешки при преобразуване на език, rc=8
DSNTPSMP CONSOLE 3 Предварителното компилиране на PSM не е успешно, не може да продължи
DSNTPSMP Резюме 1 Заявка: ALTER_REBUILD рутина TESTDB2.PROC_NAME_GOES_HERE не е завършена.
Изискана помощна функция за компилация: ALTER_REBUILD
SYSPROC.DSNTPSMP - Върна +8
TESTDB2.PROC_NAME_GOES_HERE - Разполагането е неуспешно.
TESTDB2.PROC_NAME_GOES_HERE - Връщането е завършено успешно.