Я нашел "DECLARE CURSOR" Заявление на WWW:DB2 - Объявить курсор в хранимой процедуре
CREATE OR REPLACE PROCEDURE "APART21C"."FIND_VALID_ARZTNRN"
(OUT NoOfRows BIGINT)
RESULT SETS 1
LANGUAGE SQL
SPECIFIC SQL140905135133600
BEGIN
DECLARE myARZTNR CHAR(7);
DECLARE END_TABLE INT DEFAULT 0
;
DELETE FROM APART21C.TMP_LANR07_CHECK
;
DECLARE C1 CURSOR FOR
SELECT DISTINCT Arztnr
FROM APART21C.DMP_LEV_TMP
;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET END_TABLE = 1
;
OPEN C1
;
FETCH C1 INTO myARZTNR
;
WHILE END_TABLE = 0 DO
INSERT INTO APART21C.TMP_LANR07_CHECK
SELECT * FROM TABLE(APART21C.CHECK_ARZTNR_BY_CHECKSUM(myARZTNR)) AS ARZTNRCHECK;
SET NoOfRows = NoOfRows + 1;
FETCH C1 INTO myARZTNR;
END WHILE
;
CLOSE C1
;
END
ErrorMessage является
"DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=<cursor declaration>;;<SQL statement>"
Нужна ваша помощь, пожалуйста
Я m новичок db2, у меня больше опыта работы с MS SQL Server. Оператор "SELECT * FROM TABLE (..." вызывает функцию которым возвращает таблицу. Р.
Все инструкции 'DECLARE' в составном SQL должны появляться _before_ любые исполняемые операторы, такие как' DELETE'. Найдите «составной SQL» в руководстве для вашей версии DB2. – mustaccio
И в чем ваш вопрос? – user2338816
** @ user2338816 **: Вопрос _WHY ЭТО ОШИБКА ОТОБРАЖАЕТСЯ? _ (Это легко божественно :) – RobertJ