【发布时间】:2018-03-07 12:03:39
【问题描述】:
任何人都可以帮助我解决以下问题。以下是我的要求。
我的表格格式:
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 (,) 内部,代码也考虑了这一点。如何排除这些字符值集继续下一个COMMA (,)?
错误:逗号分隔的列表在 al(d_..) 附近无效。
【问题讨论】:
-
COMMA_TO_TABLE 是一个用于解析数据库标识符列表的过程。试图以这种方式使用它只是公然滥用,应以失败作为惩罚。不要试图修复它;你将无法做到。您需要一种通用的方法来解析任意逗号分隔的字符串。然后:没有任何实用程序可以像您一样使用输入字符串。如果逗号是分隔符,那么值中的任何“文字”逗号都必须通过 some 机制进行转义。这不是解析器,any 解析器可以解决的问题;它必须在源头固定。