我在DB2 10.1 LUW
尝试重新部署存储过程时遇到了困难。
CREATE TYPE "TBSGL"."ACCT" AS ROW(
ACCT_NO VARCHAR(10),
ACCT_DESC VARCHAR(40))
CREATE TYPE "TBSGL"."ACCT_ARR" AS "TBSGL"."ACCT" ARRAY [2147483647]
CREATE OR REPLACE PROCEDURE TBSGL.TEST_ARRAY_DB2STYLE (IN P_ARRAY TBSGL.ACCT_ARR)
P1:BEGIN
FOR r AS (SELECT * FROM UNNEST(P_ARRAY) AS t(ACCT_NO, ACCT_DESC)) DO
INSERT INTO TBSGL.CHART_ACCT VALUES (r.ACCT_NO,r.ACCT_DESC);
--CALL DBMS_OUTPUT.PUT_LINE('Account Number '||r.ACCT_NO);
END FOR;
END P1 @
当我第一次部署它时,同样的程序正在运行,在成功修改之后,我再也无法部署了我已经获得
"没有授权的例程" UNNEST"类型"功能"找到了兼容的参数"
可以在DB2 10.5 LUW
中始终如一地部署同一组程序。我已经通过db2文档搜索了关于不需要的表函数,这在10.1
之前的版本中已经可用。我试图弄清楚我的手术有什么不对,我一直在绞尽脑汁。
WHILE i <= CARDINALITY(P_ARRAY) DO
SET V_FIELD = P_ARRAY[i];
INSERT INTO TBSGL.CHART_ACCT (ACCT_NO, ACCT_DESC)
VALUES (V_FIELD.ACCT_NO, V_FIELD.ACCT_DESC);
--CALL DBMS_OUTPUT.PUT_LINE('Account Number '||v_acct.ACCT_NO);
SET i = i+1;
END WHILE;
END P1
我得到了
没有授权的例行程序&#34; CARDINALITY&#34;类型&#34;功能&#34;找到了兼容的参数.. SQLCODE = -440,SQLSTATE = 42884,DRIVER = 4.17.30