DB2 - 在存储过程
问题描述:
声明光标
我发现这个 “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>"
需要你的帮助,请
我作为db2的初学者,我在MS SQL Server方面有更多的经验。 语句 “SELECT * FROM TABLE(...” 调用一个函数返回至极的表。 R.
答
问题与下面的代码
DECLARE C1 CURSOR FOR SELECT DISTINCT Arztnr FROM APART21C.DMP_LEV_TMP
我已经改变如下,并将其执行WITH HOLD
DECLARE C1 CURSOR FOR SELECT FROM Arztnr DMP_LEV_TMP;
复合SQL中的所有'DECLARE'语句都必须显示_before_任何可执行语句,例如'DELETE'。在您的DB2版本的手册中搜索“复合SQL”。 – mustaccio 2014-10-01 11:47:53
你的问题是什么? – user2338816 2014-10-01 12:05:44
** @ user2338816 **:问题是_WHY显示这个错误?_(这很容易:) :) – RobertJ 2014-10-01 13:20:00