问题描述
以下代码有什么问题?
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