当我执行大规模加载复制时,我得到了一个错误[代码:-668,SQL状态:57016]由于原因代码"而不允许操作;1〃;在桌子上";MASS_TABLE";。。SQLCODE=-668,SQLSTATE=57016,DRIVER=4.28.11
CREATE OR REPLACE PROCEDURE MASS_LOAD
()
LANGUAGE SQL
SPECIFIC SQL220916104128256
BEGIN
call SYSPROC.ADMIN_CMD(
'LOAD FROM (SELECT 5, NAME, TYPE FROM MASS_TABLE WHERE ID = 3) OF CURSOR INSERT INTO MASS_TABLE'
);
END
我后来观察到,在执行之前,我无法在表上进行选择
SET INTEGRITY FOR MASS_TABLE CHECK, FOREIGN KEY, MATERIALIZED QUERY, STAGING, GENERATED COLUMN IMMEDIATE UNCHECKED;
如何在存储过程中处理它?
--#SET TERMINATOR @
CREATE TABLE MASS_TABLE AS
(
SELECT *
FROM
(
VALUES
(3, 'NAME1', 'TYPE1')
, (3, 'NAME2', 'TYPE2')
) T (ID, NAME, TYPE)
) WITH DATA@
BEGIN
EXECUTE IMMEDIATE
'DECLARE GLOBAL TEMPORARY TABLE SESSION.T AS (SELECT * FROM MASS_TABLE WHERE ID = 3) '
||'WITH DATA WITH REPLACE ON COMMIT PRESERVE ROWS NOT LOGGED';
CALL SYSPROC.ADMIN_CMD('LOAD FROM (SELECT 5, NAME, TYPE FROM SESSION.T) OF CURSOR INSERT INTO MASS_TABLE (ID, NAME, TYPE) NONRECOVERABLE');
END@
SELECT * FROM MASS_TABLE@
ID | 名称 | 类型
---|---|
3 | 名称1 | 类型1
3 | 名称2 | 类型2
5 | 名称1 | 类型1
5 | 名称2 | 类型2