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

Kirim email ke