Home » SQL & PL/SQL » SQL & PL/SQL » Comma separated (Oracle 11g)
Comma separated [message #612806] |
Fri, 25 April 2014 00:58 |
srinivas.k2005
Messages: 404 Registered: August 2006
|
Senior Member |
|
|
Hi,
Requirement:
I need to get the each value from a string (comma separated) and pass the each value as parameter to the procedure inside the for loop.
Example requirement like below:
DECLARE
v_a VARCHAR2(100):= '1,2,3,4,5,6';
BEGIN
For i in (v_a ) loop
Get_Procedure_Status (Each value from variable v_a - comma separated);-- Procedure
End loop;
END;
/
Please advise.
Regards,
SRK
|
|
|
Re: Comma separated [message #612808 is a reply to message #612806] |
Fri, 25 April 2014 01:05 |
|
Littlefoot
Messages: 21808 Registered: June 2005 Location: Croatia, Europe
|
Senior Member Account Moderator |
|
|
Here's one option:SQL> declare
2 v_a varchar2(30) := '1,2,3,4,5,6';
3 begin
4 for cur_r in (select regexp_substr (v_a, '[^,]+', 1, level) result
5 from dual
6 connect by regexp_substr (v_a, '[^,]+', 1, level) is not null
7 )
8 loop
9 dbms_output.put_line(cur_r.result);
10 end loop;
11 end;
12 /
1
2
3
4
5
6
PL/SQL procedure successfully completed.
SQL>
|
|
|
Re: Comma separated [message #612809 is a reply to message #612806] |
Fri, 25 April 2014 01:07 |
|
Michel Cadot
Messages: 68647 Registered: March 2007 Location: Nanterre, France, http://...
|
Senior Member Account Moderator |
|
|
This is a FAQ.
Here's a starter:
SQL> var mylist varchar2(100)
SQL> exec :mylist := '5,11,13,22,23,31,44,45'
PL/SQL procedure successfully completed.
SQL> select substr(:mylist,
2 instr(','||:mylist||',', ',', 1, rn),
3 instr(','||:mylist||',', ',', 1, rn+1)
4 - instr(','||:mylist||',', ',', 1, rn) - 1) value
5 from ( select level rn from dual
6 connect by level
7 <= length(:mylist)-length(replace(:mylist,',',''))+1
8 )
9 /
VALUE
-----------------------------------------------------------
5
11
13
22
23
31
44
45
|
|
|
|
|
|
Goto Forum:
Current Time: Fri Apr 26 19:13:32 CDT 2024
|