Осмотрев весь Интернет, я должен вернуться к 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 VERSION 9 REL. 1.0 СТРАНИЦА 1
CONVERT SQLPRINT 2 0УКАЗАНЫ ОПЦИИ: STDSQL(NO) NEWFUN(YES) HOST(SQL) ONEPASS MAR(1,80) CCSID(37)
CONVERT SQLPRINT 3 DSNHDECP LOADED FROM - (SYS2.DB2T.DSNEXIT(DSNHDECP))
CONVERT SQLPRINT 4 0 ИСПОЛЬЗУЕМЫЕ ОПЦИИ — ЗАДАННЫЕ ИЛИ ПО УМОЛЧАНИЮ
ПРЕОБРАЗОВАТЬ SQLPRINT 5 APOST
ПРЕОБРАЗОВАТЬ SQLPRINT 6 APOSTSQL
ПРЕОБРАЗОВАТЬ SQLPRINT 7 ПРИСОЕДИНИТЬ (TSO)
ПРЕОБРАЗОВАТЬ SQLPRINT 8 CCSID(37)
ПРЕОБРАЗОВАТЬ SQLPRINT 9 NOPADNTSTR
ПРЕОБРАЗОВАТЬ SQLPRINT 10 ПОДКЛЮЧИТЬ(2)
ПРЕОБРАЗОВАТЬ SQLPRINT 11 ДЕК (15)
ПРЕОБРАЗОВАТЬ ФЛАГ SQLPRINT 12 (I)
ПРЕОБРАЗОВАТЬ SQLPRINT 13 HOST(SQL)
ПРЕОБРАЗОВАТЬ SQLPRINT 14 LINECOUNT (60)
ПРЕОБРАЗОВАТЬ ПОЛЯ SQLPRINT 15 (1,80)
ПРЕОБРАЗОВАТЬ SQLPRINT 16 NEWFUN (ДА)
ПРЕОБРАЗОВАТЬ SQLPRINT 17 ONEPASS
ПРЕОБРАЗОВАТЬ ВАРИАНТЫ SQLPRINT 18
ПРЕОБРАЗОВАТЬ SQLPRINT 19 ПЕРИОД
ПРЕОБРАЗОВАТЬ SQLPRINT 20 NOSOURCE
ПРЕОБРАЗОВАТЬ SQLPRINT 21 STDSQL(НЕТ)
ПРЕОБРАЗОВАТЬ SQLPRINT 22 SQL(DB2)
ПРЕОБРАЗОВАТЬ SQLPRINT 23 NOXREF
CONVERT SQLPRINT 24 СООБЩЕНИЯ ПРЕДКОМПИЛЬЕРА SQL 1DB2 СТРАНИЦА 2
CONVERT SQLPRINT 25 0DSNH016I E DSNHPARS LINE 26 COL 10 "GLOBAL" ТРЕБУЕТСЯ
CONVERT SQLPRINT 26 DSNH104I E DSNHPARS LINE 26 COL 10 НЕПРАВИЛЬНЫЙ СИМВОЛ "CUR_FFB". НЕКОТОРЫЕ СИМВОЛЫ, КОТОРЫЕ МОГУТ БЫТЬ ЗАКОННЫМИ: ГЛОБАЛЬНЫЕ
CONVERT SQLPRINT 27 СТАТИСТИКА ПРЕДКОМПИЛЯТОРА SQL 1DB2 СТРАНИЦА 3
ПРЕОБРАЗОВАТЬ SQLPRINT 28 0ИСТОЧНАЯ СТАТИСТИКА
CONVERT SQLPRINT 29 SOURCE LINES READ: 32
ПРЕОБРАЗОВАТЬ SQLPRINT 30 КОЛИЧЕСТВО СИМВОЛОВ: 14
ПРЕОБРАЗОВАТЬ SQLPRINT 31 БАЙТ ТАБЛИЦЫ СИМВОЛОВ, ИСКЛЮЧАЯ АТРИБУТЫ: 1952
CONVERT SQLPRINT 32 - ДЛЯ ЭТОЙ ПРОГРАММЫ БЫЛО 2 СООБЩЕНИЯ.
CONVERT SQLPRINT 33 БЫЛО 0 СООБЩЕНИЙ, ПОДАВЛЕННЫХ ОПЦИЕЙ ФЛАГА.
CONVERT SQLPRINT 34 272544 БАЙТА ПАМЯТИ БЫЛО ИСПОЛЬЗОВАНО ПРЕДКОМПИЛЯТОРОМ.
ПРЕОБРАЗОВАТЬ SQLPRINT 35 КОД ВОЗВРАТА 8
CONVERT SQLTERM 1 DSNH016I E DSNHPARS LINE 26 COL 10 "GLOBAL" ТРЕБУЕТСЯ
CONVERT SQLTERM 2 DSNH104I E DSNHPARS LINE 26 COL 10 ILLEGAL SYMBOL "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 НЕ ДЕТЕРМИНИСТИЧЕСКИЙ ВЫЗЫВАЕТСЯ ПРИ НУЛЕВОМ ВВОДЕ ОГРАНИЧЕННЫЕ ИЗМЕНЕНИЯ SQL DATA COLLID TESTDB2 WLM ENVIRONMENT TDB2ENV ASUTIME
CONVERT SQLTERM 5 LIMIT 5000000 RUN OPTIONS'NOTEST(NONE,,,*)'P1 : BEGIN DECLARE V_SEQ_NO DECIMAL(3,0); ОБЪЯВИТЬ V_LVL INT ; ЗАЯВИТЬ ГЛОБАЛЬНЫЙ ВРЕМЕННЫЙ
CONVERT SQLTERM 6 Y TABLE SESSION.SEQ_NO_TABLE(LVL INT NOT NULL,SEQ_NO DECIMAL(3,0)NOT NULL); УСТАНОВИТЬ V_LVL = 0 ; ВСТАВИТЬ В SESSION.SEQ_NO_TABLE(LVL,S
ПРЕОБРАЗОВАТЬ SQLTERM 7 EQ_NO) ЗНАЧЕНИЯ (V_LVL, P_SEQ_NO); ЗАЯВИТЬ CUR_FFB
ПРЕОБРАЗОВАТЬ SQLTERM 8
ПРЕОБРАЗОВАТЬ СТАТИСТИЧЕСКИЕ ИСТОЧНИКИ SQLTERM 9
CONVERT SQLTERM 10 SOURCE LINES READ: 32
ПРЕОБРАЗОВАТЬ SQLTERM 11 КОЛИЧЕСТВО СИМВОЛОВ: 14
ПРЕОБРАЗОВАТЬ SQLTERM 12 БАЙТОВ ТАБЛИЦЫ СИМВОЛОВ, ИСКЛЮЧАЯ АТРИБУТЫ: 1952
CONVERT SQLTERM 13 ДЛЯ ЭТОЙ ПРОГРАММЫ БЫЛО 2 СООБЩЕНИЯ.
CONVERT SQLTERM 14 БЫЛО 0 СООБЩЕНИЙ, ПОДАВЛЕННЫХ ОПЦИЕЙ ФЛАГА.
CONVERT SQLTERM 15 272544 БАЙТА ПАМЯТИ БЫЛО ИСПОЛЬЗОВАНО ПРЕДКОМПИЛЯТОРОМ.
ПРЕОБРАЗОВАТЬ SQLTERM 16 КОД ВОЗВРАТА 8
DSNTPSMP CONSOLE 1 * Процессор процедур SQL DB2 V9R1 DSNTPSMP 1.21 (PM09148 23-03-2010)
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 — Откат выполнен успешно.