我想将'1,2,3,4,5,6,7,8,9,10,11,12'
之类的多个值作为单个参数传递,并将它们插入表中。
我有一个为特定客户保存账单的方案,客户可能已经购买了多件商品。
答案 0 :(得分:4)
您可以传递以逗号分隔的值。此PL / SQL过程分解逗号分隔的字符串(作为P_VALUE
传递)并将每个标记作为单独的行插入表中,以及其他一些值。
PROCEDURE XXXXGL_INST_PARAMS (P_VALUE VARCHAR2) IS
i number;
n number;
r number;
pos number;
L_NAT_ACCT varchar2(10);
L_UID number;
BEGIN
L_UID := fnd_global.user_id;
n := length(P_VALUE);
i := 1;
r := 1;
WHILE (i < n) LOOP
pos := (INSTR(P_VALUE,',',1,r)-i);
IF pos < 0 THEN
pos := n;
END IF;
SELECT substr(P_VALUE,i,pos) INTO L_NAT_ACCT FROM dual;
INSERT INTO xxXXX.xxXXXgl_natural_accts_t
(NATURAL_ACCT, CREATION_DATE, CREATED_BY, LAST_UPDATE_LOGIN,
LAST_UPDATE_DATE, LAST_UPDATED_BY)
VALUES(L_NAT_ACCT,SYSDATE,L_UID,L_UID,SYSDATE,L_UID);
i := i + length(L_NAT_ACCT)+1;
r := r+1;
END LOOP;
END;
注意:我发现了here。