【发布时间】:2018-10-06 16:02:15
【问题描述】:
我有一个 Oracle Apex 页面,我从该页面接收到 4 个变量。
:P1_COL1
:P1_COL2
:P1_COL3
:P1_COL4
这里的问题是 P1_COL4 可以接收许多值,并且它们之间用冒号分隔。所以我所做的是我声明了一个带有正则表达式的游标,以用冒号分隔行。
例如,
如果我这样做,目前的输出是这样的:
select :P1_COL1,:P1_COL2,:P1_COL3,:P1_COL4 from dual;
鲍勃,琼斯,M,蓝色:红色:绿色:黄色:紫色
而我正在寻找这样的东西......
Bob, Jones, M, BLUE
Bob, Jones, M, RED
Bob, Jones, M, GREEN
Bob, Jones, M, YELLOW
Bob, Jones, M, PURPLE
但目前我的代码不起作用
DECLARE CURSOR a1
is
WITH statement AS
(
select :P1_COL4 obj
from dual
)
SELECT REGEXP_SUBSTR(OBJ,'[^,:;]+',1,LEVEL) FROM dual CONNECT BY LEVEL<=LENGTH(REGEXP_REPLACE(OBJ,'[^,:;]+'))+1;
begin
for x in a1
loop
dbms_output.put_line(:P1_COL1 ||','|| :P1_Col2 ||','||
:P1_Col3||','|| a1 || chr(13));
end loop;
end;
【问题讨论】:
标签: sql regex oracle plsql procedure