创建IBM db2过程时出现以下错误消息

问题描述

以下代码有什么问题?

PROCEDURE DATETYPE DYNAMIC RESULT SETS 1 LANGUAGE sql
BEGIN
DECLARE @DateType TABLE
    ( LABEL CHAR(30),Value VARCHAR(1) );

DECLARE C CURSOR WITH RETURN FOR;

INSERT
    INTO
        @DateType
    VALUES ('Paid Dates Only','P') INSERT
        INTO
            @DateType
        VALUES('Incurred Dates with Paid','S') SELECT
            *
        FROM
            @DateType;

OPEN C;
END 

我正在使用db2并得到以下错误

sql错误[42601]:在“”之后发现意外的标记“(LABEL CHAR(30),Value VARCHAR(1))”。预期的令牌可能包括:“ E @DateType TABLE” .. sqlCODE = -104,sqlSTATE = 42601,DRIVER = 4.21.29

解决方法

无论是DB2还是db2-400或db2-luw,DECLARE xx TABLE都不是DB2 SQL PL语法

顺便说一句,如果我理解得很好,您的代码可以用视图代替

CREATE OR REPLACE VIEW DATETYPE (LABEL,VALUE) as (
    VALUES 
    ('Paid Dates Only','P'),('Incurred Dates with Paid','S')
)

编辑:因为它必须是程序,所以您可以使用

   CREATE OR REPLACE PROCEDURE DATETYPE ()
     RESULT SETS 1
     LANGUAGE SQL
   BEGIN
       DECLARE DATAS CURSOR WITH RETURN FOR 
            VALUES 
            ('Paid Dates Only','S');
       OPEN DATAS;
   END