【问题标题】:Pass multiple values to a single parameter in PL/SQL and insert them into a table将多个值传递给 PL/SQL 中的单个参数并将它们插入到表中
【发布时间】:2014-01-17 11:36:38
【问题描述】:

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

我有一个场景,比如为特定客户保存账单,客户可能购买了多件商品。

【问题讨论】:

标签: sql oracle plsql


【解决方案1】:

您可以传递以逗号分隔的值。这个 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

【讨论】:

  • 好多了(我没有投反对票,但我确实对改进投了赞成票)
猜你喜欢
  • 1970-01-01
  • 2016-02-03
  • 2015-08-12
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多