Oracle non fornisce in modo nativo un metodo per
convertire una stringa, in cui ci sono valori numerici separati da un
token, in un array.
Ecco una possibile soluzione:
create or replace type myTableType as table of number;
create or replace function str2tbl( p_str in varchar2 ) return
myTableType
as
l_str long default p_str || ',';
l_n number;
l_data myTableType := myTabletype();
begin
loop
l_n := instr( l_str, ',' );
exit when (nvl(l_n,0) = 0);
l_data.extend;
l_data( l_data.count ) := ltrim(rtrim(substr(l_str,1,l_n-1)));
l_str := substr( l_str, l_n+1 );
end loop;
return l_data;
end;
/
da utilizzare nel seguente modo
select *
from all_users
where user_id in
(
select *
from THE
(
select cast( str2tbl( '1, 3, 5, 7, 99' ) as mytableType )
from dual
)
)
USERNAME USER_ID CREATED
------------------------------ ---------- ---------
SYSTEM 5 20-APR-99
fonti:
forums.oracle.com
asktom.oracle.com
powered by IMHO 1.3