任何人都可以帮我解决以下问题。以下是我的要求。
我的表格格式:
101 a
102 b
103 c
104 data_get.cust_val(data_get.cust_val(val_2),emp_id)
105 d
dbms_utility.comma_to_table
( list => regexp_replace('100,a,101,b,103,c,104,data_get.cust_val(data_get.cust_val(val_2),emp_id),105,d','(^|,)','\1X')
, tablen => l_count
, tab => l_array
);
目前104值没有占用,因为相应的值在COMMA (,)
内,代码也考虑了这一点。如何排除这些char值集继续下一个COMMA (,)
?
错误:al(d _ ..
附近的逗号分隔列表无效
答案 0 :(得分:0)
100
和data_get.cust_val(data_get.cust_val(val_2),emp_id)
之类的值不是valid Oracle identifier names,这是dbms_utility.comma_to_table
旨在解析的内容。它们不能以数字开头,包含括号,超过30个字符等。
你的regexp_replace
变成了这个字符串
100,a,101,b,103,c,104,data_get.cust_val(data_get.cust_val(val_2),emp_id),105,d
到
X100,Xa,X101,Xb,X103,Xc,X104,Xdata_get.cust_val(data_get.cust_val(val_2),Xemp_id),X105,Xd
处理数字名称,但第8项仍然不是有效的标识符。
如果您尝试将逗号分隔的字符串解析为数组,则需要编写自己的实用程序。