COMMA_TO_TABLE输入值本身有逗号。逗号分隔列表在pe附近无效(c_

时间:2018-03-07 12:03:40

标签: sql oracle plsql

任何人都可以帮我解决以下问题。以下是我的要求。

我的表格格式:

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 _ ..

附近的逗号分隔列表无效

1 个答案:

答案 0 :(得分:0)

100data_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项仍然不是有效的标识符。

如果您尝试将逗号分隔的字符串解析为数组,则需要编写自己的实用程序。