Terimakasih sarannya, Akhirnya berhasil dengan menggunakan function array to table of varchar dengan tetapi menggunan SYS_CONTEXT .
Salam On 4/23/09, Awaluddin Hamid <[email protected]> wrote: > Yulius Wibowo wrote: >> >> >> Buat dan gunakan fungsi yg mengubah array menjadi string dengan >> delimiter koma. >> >> Contoh: >> Input:: >> x(1) = 'ABC' >> x(2) = 'DEF' >> x(3) = 'HIJ' >> >> Output:: >> ABC,DEF,GHI >> >> create or replace function array_to_str(x in list_acc) >> is >> y VARCHAR2(1000); >> begin >> for i in x.first..x.last loop >> y := y || ',' || x(i); >> end loop; >> y := substr(y,2); >> return(y); >> end; >> / >> >> dbms_session. set_context( namespace => 'var_dr', attribute => >> 'account_id' , *value => array_to_str(account_id)*) ; >> >> CMIIW, >> bw >> >> --- In [email protected] >> <mailto:indo-oracle%40yahoogroups.com>, zainal arifin >> <zainal.em...@...> wrote: >> > >> > ada yang bisa ngasih workaround nya gak ya. >> > goal nya saya buat parameterized view.. tetapi salah satu parameternya >> > sebenarnya adalah >> > where customer_id in (:parameter) dimana :parameter ini adalah array >> dari >> > varchar2 >> > >> > >> > wassalam >> >> >> >> __,_.____ > > > Bisa juga dengan menggunakan parameter diambil dari package (bukan dari > SYS_CONTEXT). > > SQL> CREATE OR REPLACE TYPE var_typ AS TABLE OF VARCHAR2(9) > 2 / > Type created. > > SQL> CREATE OR REPLACE PACKAGE param_pack AS > 2 PROCEDURE set_record(v_typ var_typ); > 3 FUNCTION get_record RETURN var_typ; > 4 END; > 5 / > Package created. > > SQL> CREATE OR REPLACE PACKAGE BODY param_pack AS > 2 var_tab var_typ; > 3 PROCEDURE set_record(v_typ var_typ) IS > 4 BEGIN > 5 var_tab := v_typ; > 6 END; > 7 FUNCTION get_record RETURN var_typ IS > 8 BEGIN > 9 RETURN var_tab; > 10 END; > 11 END; > 12 / > Package body created. > > SQL> SELECT * FROM cities > 2 / > REGION COUNRTY CITY > ------------------------------ ------------------------------ > ---------------- > AMERICA UNITED STATED NEW YORK > EUROPE FRANCE PARIS > ASIA JAPAN TOKYO > ASIA INDIA MUMBAI > EUROPE UNITED KINGDOM LONDON > AMERICA UNITED STATES WASHINGTON DC > > SQL> CREATE OR REPLACE VIEW vw_cities AS > 2 SELECT * FROM cities > 3 WHERE region IN ( > 4 SELECT COLUMN_VALUE FROM THE ( > 5 SELECT CAST(param_pack.get_record AS var_typ) FROM DUAL)) > 6 / > View created. > > SQL> EXEC param_pack.set_record(var_typ('ASIA','EUROPE')) > > PL/SQL procedure successfully completed. > > SQL> SELECT * FROM vw_cities > 2 / > REGION COUNRTY CITY > ------------------------------ ------------------------------ ------- > ASIA INDIA MUMBAI > ASIA JAPAN TOKYO > EUROPE UNITED KINGDOM LONDON > EUROPE FRANCE PARIS > > > CMIIW, > AH >

