Stored procedures DB2-在存储过程中声明游标

Stored procedures DB2-在存储过程中声明游标,stored-procedures,cursor,db2,db2-luw,Stored Procedures,Cursor,Db2,Db2 Luw,我在WWW上找到了以下声明: 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 ; D

我在WWW上找到了以下声明:

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
错误消息是

"DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=<cursor declaration>;;<SQL statement>"
需要你的帮助吗

我是db2的初学者,在MS SQL Server方面有更多的经验。
语句SELECT*FROM TABLE。。。调用返回表的函数。

以下代码有问题

为声明C1游标 选择不同的Arztnr 来自APART21C.DMP_LEV_TMP

我已更改如下,并已执行

将C1游标声明为保持
从DMP_LEV_TMP中选择Arztnr

复合SQL中的所有DECLARE语句必须出现在任何可执行语句(如DELETE)之前。在您的DB2版本的手册中搜索复合SQL。您的问题是什么?@user2338816:问题是为什么会显示此错误?很容易预测:@mustaccio:错误消失了,我也一样。感谢您的快速帮助:您甚至需要光标吗?为什么不将选择作为插入的一部分?你这样做会吃额外的开销,没有真正的好处。