将多个值传递给PL/SQL中的单个参数,并将其插入表中

将多个值传递给PL/SQL中的单个参数,并将其插入表中,sql,oracle,plsql,Sql,Oracle,Plsql,我想将多个值作为单个参数传递,比如'1,2,3,4,5,6,7,8,9,10,11,12',,并将它们插入表中 我有一个类似于为特定客户保存账单的场景,该客户可能购买了多个项目。您可以通过逗号分隔的值进行传递。此PL/SQL过程分解逗号分隔的字符串(作为P_值传递),并将每个标记作为单独的行以及其他一些值插入表中 PROCEDURE XXXXGL_INST_PARAMS (P_VALUE VARCHAR2) IS i number; n num

我想将多个值作为单个参数传递,比如
'1,2,3,4,5,6,7,8,9,10,11,12',
,并将它们插入表中


我有一个类似于为特定客户保存账单的场景,该客户可能购买了多个项目。

您可以通过逗号分隔的值进行传递。此PL/SQL过程分解逗号分隔的字符串(作为
P_值
传递),并将每个标记作为单独的行以及其他一些值插入表中

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;
程序XXXXGL_INST_参数(P_值VARCHAR2)为
i编号;
n数;
r数;
pos号;
L_NAT_ACCT varchar2(10);
油号;
开始
L\u UID:=fnd\u global.user\u id;
n:=长度(P_值);
i:=1;
r:=1;
WHILE(i
注意:我发现这一点。

好多了(我没有投反对票,但我投了赞成票)