不允许对表上的原因码"1"执行 DB2 操作



当我执行大规模加载复制时,我得到了一个错误[代码:-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@
类型类型1类型2类型1类型2
ID名称
3名称1
3名称2
5名称1
5名称2

最新更新