Oracle在表中插入逗号分隔的字符串值--
试图将过程输入参数接受为逗号分隔字符串的整行插入表中,例如,这是一个null字符串“” 以下是我尝试过的:Oracle在表中插入逗号分隔的字符串值--,oracle,Oracle,试图将过程输入参数接受为逗号分隔字符串的整行插入表中,例如,这是一个null字符串“” 以下是我尝试过的: DECLARE I_NPUT VARCHAR2(4000) := 'THIS,IS,AN,Example,null,STRING# This , is ,an,another,ex,null#'The,list,goes,on,on,null''; L_COUNT BINARY_INTEGER; L_ARRAY DBMS_UTILITY.LNAME_ARRAY; BEGIN
DECLARE
I_NPUT VARCHAR2(4000) := 'THIS,IS,AN,Example,null,STRING# This , is ,an,another,ex,null#'The,list,goes,on,on,null'';
L_COUNT BINARY_INTEGER;
L_ARRAY DBMS_UTILITY.LNAME_ARRAY;
BEGIN
DBMS_UTILITY.COMMA_TO_TABLE(LIST => REGEXP_REPLACE(I_NPUT, '(^|,)', '\1x'), TABLEN => L_COUNT, TAB => L_ARRAY);
DBMS_OUTPUT.PUT_LINE(L_COUNT);
FOR I IN 1 .. L_COUNT
LOOP
DBMS_OUTPUT.PUT_LINE('Element ' || TO_CHAR(I) || ' of array contains: ' || SUBSTR(L_ARRAY(I), 2));
INSERT INTO TEST VALUES
(SUBSTR(L_ARRAY(I), 2)
);
COMMIT;
END LOOP;
END;
报税表必须是:
COL_1 COL_2 COL_3 COL_4 COL_5 COL_6
-----------------------------------------------
THIS IS AN Example null STRING
这里p_string-您的输入字符串让我们看看您的尝试如何。。?我们不是来为您编写软件的,我们是来帮助您解决您无法解决的问题的。通常,列表中的每个元素都包含在单个varchar2列中。编写本文是为了尝试将每个元素插入到它自己的列中(如果不知道列表中有多少元素,则不太可行)。您真的需要所有元素进入一个记录吗?你真的知道列表中元素的数量吗?如果我的字符串输入是this'this,is,AN,Example,null,string#this,is,AN,other,ex,null#'the,list,goes,on,on,null'行的区别是#它需要按行插入表中。
sss := replace(p_string,',',''',''');
sss := regexp_replace(sss, '''null''','null');
EXECUTE IMMEDIATE 'INSERT INTO your_table (COL_1, COL_2, COL_3, COL_4, COL_5, COL_6)
VALUES (''' ||sss|| ''')';