【发布时间】:2021-09-02 01:47:07
【问题描述】:
我需要在 IBM DB2 中创建存储过程,我们必须在其中创建临时表并在该临时表中插入和删除一些值并返回临时表。
IBM DB2 中的存储过程出现以下错误
DB2ADMIN.GETRECORDS - 部署已开始。 创建存储过程返回 SQLCODE:-104,SQLSTATE:42601。 DB2ADMIN.GETRECORDS: 39: 在“”之后发现了一个意外的标记“”。预期的标记可能包括:“”.. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.19.56 在“”之后发现了一个意外的标记“”。预期的标记可能包括:“”.. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.19.56 DB2ADMIN.GETRECORDS - 部署失败。 DB2ADMIN.GETRECORDS - 回滚成功完成。
下面是 IBM DB2 中的存储过程
CREATE OR REPLACE PROCEDURE GETRECORDS ()
DYNAMIC RESULT SETS 1
P1:开始
-- temporary table declared
DECLARE GLOBAL TEMPORARY TABLE SESSION.TEMPRECORDDETAILS
(Column1 NVARCHAR(50) NOT NULL,
Column2 NVARCHAR(50) NOT NULL,
Column3 NVARCHAR(50) NOT NULL,
Column4 NVARCHAR(255) NOT NULL,
Column5 FLOAT ,
Column6 FLOAT ,
Column7 NVARCHAR(50) NOT NULL,
Column8 FLOAT ,
Column9 FLOAT ,
Column10 NVARCHAR(255) NOT NULL
);
-- inserted data in temporary table
INSERT INTO SESSION.TEMPRECORDDETAILS
SELECT VM.Column1,
VM.Column2,
VM.Column3,
VM.Column4,
VM.Column5,
VM.Column6,
VM.Column7,
VM.Column8,
VM.Column9,TRIM(VM.Column1) + TRIM(VM.Column2) + TRIM(VM.Column3)
FROM (SELECT * FROM RECORDUNITS )
AS VM
-- deleted data from temporary table
DELETE FROM SESSION.TEMPRECORDDETAILS
WHERE TRIM(Column10) IN(SELECT TRIM(Column1) + TRIM(Column2) + TRIM(Column3)
FROM OLDRECORDS);
-- trying to return temporary table
DECLARE entCursor1 CURSOR WITH RETURN FOR
SELECT Column1,
Column2,
Column3,
Column4,
Column5,
Column6,
Column7,
Column8,
Column9
FROM SESSION.TEMPRECORDDETAILS ORDER BY Column1;
OPEN entCursor1;
结束P1
【问题讨论】:
-
这是重复的stackoverflow.com/questions/68014632/…吗?如果是,删除其中一个
标签: sql db2 database-migration