我正在创建一个存储过程,以从源数据库MYDB->目标数据库NEWDB加载数据。
我将数据加载到表SCHEMA1.EMPLOYEE1,SCHEMA1.EMPLOYEE2,...
编辑1:
CREATE or replace PROCEDURE SCHEMA1.PROC_LOAD ()
SPECIFIC PROC_LOAD
LANGUAGE SQL
BEGIN
DECLARE v_table varchar(100);--
DECLARE truncate_stmt varchar(1000);--
DECLARE load_stmt varchar(1000);--
for v_table as select rtrim(tabname) as tabname from syscat.tables where tabschema='SCHEMA1' and tabname like '%EMPLOYEE%'
do
-- Truncate the table first
set truncate_stmt = 'ALTER TABLE SCHEMA1.'||v_table.tabname||' ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE';--
prepare s1 from truncate_stmt;--
execute s1;--
-- Load the data
set load_stmt = 'LOAD FROM (DATABASE MYDB SELECT * FROM SCHEMA1.'||v_table.tabname||'_HIST) OF CURSOR MESSAGES ON SERVER INSERT INTO SCHEMA1.'||v_table.tabname||' NONRECOVERABLE';--
CALL SYSPROC.ADMIN_CMD (load_stmt);--
end for;--
END;
上面是我的db2存储过程的代码,我已经成功创建了它,但是当我调用它时,它返回错误:
ERROR [24501] [IBM][DB2/NT64] SQL0501N The cursor specified in a FETCH statement or CLOSE statement is not open or a cursor variable in a cursor scalar function reference is not open.
在目标数据库中,我从SCHEMA1.EMPLOYEE1中选择数据,它显示数据已成功加载,但是对于EMPLOYEE2,3,...,旧数据仍然存在,似乎只有第一个表循环中的加载成功。
有什么主意吗?我的db2平台也是luw上的db2 11.1。预先感谢。