Splitting comma separated string in a PL/SQL stored proc

前端 未结 8 1796
别跟我提以往
别跟我提以往 2020-11-30 05:08

I\'ve CSV string 100.01,200.02,300.03 which I need to pass to a PL/SQL stored procedure in Oracle. Inside the proc,I need to insert these values in a Number column in the ta

相关标签:
8条回答
  • 2020-11-30 05:46
    CREATE OR REPLACE PROCEDURE insert_into (
       p_errcode        OUT   NUMBER,
       p_errmesg        OUT   VARCHAR2,
       p_rowsaffected   OUT   INTEGER
    )
    AS
       v_param0   VARCHAR2 (30) := '0.25,2.25,33.689, abc, 99';
       v_param1   VARCHAR2 (30) := '2.65,66.32, abc-def, 21.5';
    BEGIN
       FOR i IN (SELECT COLUMN_VALUE
                   FROM TABLE (SPLIT (v_param0, ',')))
       LOOP
          INSERT INTO tempo
                      (col1
                      )
               VALUES (i.COLUMN_VALUE
                      );
       END LOOP;
    
       FOR i IN (SELECT COLUMN_VALUE
                   FROM TABLE (SPLIT (v_param1, ',')))
       LOOP
          INSERT INTO tempo
                      (col2
                      )
               VALUES (i.COLUMN_VALUE
                      );
       END LOOP;
    END;
    
    0 讨论(0)
  • 2020-11-30 05:47

    Here is a good solution:

    FUNCTION comma_to_table(iv_raw IN VARCHAR2) RETURN dbms_utility.lname_array IS
       ltab_lname dbms_utility.lname_array;
       ln_len     BINARY_INTEGER;
    BEGIN
       dbms_utility.comma_to_table(list   => iv_raw
                                  ,tablen => ln_len
                                  ,tab    => ltab_lname);
       FOR i IN 1 .. ln_len LOOP
          dbms_output.put_line('element ' || i || ' is ' || ltab_lname(i));
       END LOOP;
       RETURN ltab_lname;
    END;
    

    Source: CSV - comma separated values - and PL/SQL (link no longer valid)

    0 讨论(0)
提交回复
热议问题