Sorry masih belum bisa euy...

Error yg didapat:
declare
*
ERROR at line 1:
ORA-01008: not all variables bound
ORA-06512: at line xxx

Hhhmmmm .....



--- In [email protected], "yulius_wibowo" <yulius_wib...@...> wrote:
>
> 
> 1. Pada nilai parameter yg dimasukkan, seharusnya utk nilai character 
> digunakan tanda petik (')
> Jadi pada ['UPDATE emp SET ename = xxx ,hiredate = SYSDATE ,sal = 100 WHERE 
> empno = 7934 AND deptno IN(10,20) AND  job = CLERK AND ENAME = MILLER AND 
> SAL= 1300']
> seharusnya ['UPDATE emp SET ename = xxx ,hiredate = SYSDATE ,sal = 100 WHERE 
> empno = 7934 AND deptno IN(10,20) AND  job = ''CLERK'' AND ENAME = ''MILLER'' 
> AND SAL= 1300']
> 
> 2. Utk nilai setelah USING, masukkan nilainya ke dalam varray terlebih dulu 
> (extendable array, pada penambahan ":bxxx"), 
> kemudian nantinya di LOOP dan dimasukkan ke dalam sebuah variable (mis: 
> v_using .Di concat dgn menggunakan tanda koma (,)),
> setelah itu dimasukkan ke dalam EXECUTE IMMEDIATE ... USING v_using
> 
> cmiiw,
> Bowo
> 
> --- In [email protected], "oracle@" <oracle@> wrote:
> >
> > mungkin ada yg bisa bantu, potongan kode ini untuk parsing suatu text
> > sebagai parameter procedure.
> > ini dalam case dimana aplikasi sudah give up dgn bind variable :)
> > 
> > sehingga mau diakali yg melakukan bind dari sisi oracle dgn procedure, namun
> > demikian text parameter nantinya dinamis, so 1 prosedur ini untuk semua
> > query baik select maupun dml.
> > 
> > code di bawah ini sudah bekerja dgn baik, tapi sayangnya masih harus
> > hardcode dalam sintaks execute immediate setelah keyword USING :)
> > 
> > jika dipaksa array yg dimasukan kedalam USING, ada masalah pula dgn
> > perbedaan variable dalam runtime nantinya.... duhhhhh
> > 
> > mungkin pak bowo mau ngasih pencerahan? :)
> > 
> > 
> > set serveroutput on
> > declare
> > type str_var2 is varray(100) of varchar2(100);
> > l_str_var2 str_var2 := str_var2();
> > cursor c1 is SELECT EXTRACTVALUE(xt.column_value,'
> > e') str
> > FROM   TABLE(XMLSEQUENCE
> >     ( EXTRACT
> >     ( XMLTYPE('<coll><e>' ||
> >     REPLACE('UPDATE emp SET ename = xxx ,hiredate = SYSDATE ,sal = 100 WHERE
> > empno = 7934 AND deptno IN(10,20) AND job = CLERK AND ENAME = MILLER AND SAL
> > = 1300',' ','</e><e>') ||
> >     '</e></coll>'), '/coll/e') )) xt;
> > l_str1 varchar2(4000);
> > l_str2 varchar2(4000);
> > l_str3 varchar2(4000);
> > l_str201 varchar2(400);
> > l_str202 date := sysdate;
> > l_str203 varchar2(400);
> > l_str204 varchar2(400);
> > l_str205 number;
> > l_str206 varchar2(400);
> > l_str207 varchar2(400);
> > l_str208 varchar2(400);
> > l_dummy pls_integer;
> > l_flag pls_integer;
> > n pls_integer;
> > m pls_integer;
> > p_rowid varchar2(100);
> > begin
> >     n := 1;
> >     l_flag := 0;
> >     open c1;
> >     loop
> >         fetch c1 into l_str3;
> >         exit when c1%notfound;
> >         if l_flag = 1 then
> >             l_str_var2.extend(n);
> >             l_str_var2(n) := l_str3;
> >             l_str2 := l_str2||':b'||n;
> >             n := n+1;
> >             l_flag :=0;
> >             goto next_loop;
> >         end if;
> > 
> >         if trim(l_str3) = '=' or trim(substr(l_str3,1,3)) ='IN(' then
> >             l_flag := 1;
> >         end if;
> > 
> >         if trim(substr(l_str3,1,3)) ='IN(' then
> >             l_flag := 2;
> >             m := length(l_str3)-2;
> >             l_str_var2(n) := substr(l_str3,4,m-2);
> > --            l_str2 := l_str2||' IN(:b'||n||')';
> >             l_str2 := l_str2||' = :b'||n;
> >             l_flag := 0;
> >             n := n+1;
> >             goto next_loop;
> >         end if;
> > 
> >         l_str2 := l_str2 ||' '|| l_str3;
> > 
> >         <<next_loop>>
> >         l_dummy :=0;
> >     end loop;
> >     close c1;
> > 
> >     l_str201 := l_str_var2(1);
> >     l_str203 := l_str_var2(3);
> >     l_str204 := l_str_var2(4);
> >     l_str205 := substr(l_str_var2(5),1,2);
> >     l_str206 := l_str_var2(6);
> >     l_str207 := l_str_var2(7);
> >     l_str208 := l_str_var2(8);
> >     l_str3 := '
> > l_str201,l_str202,l_str203,l_str204,l_str205,l_str206,l_str207,l_str208';
> > 
> >     dbms_output.put_line(l_str2 ||' using '||l_str3);
> >     execute immediate l_str2 using
> > l_str201,l_str202,l_str203,l_str204,l_str205,l_str206,l_str207,l_str208;
> > end;
> > /
> > 
> > 
> > [Non-text portions of this message have been removed]
> >
>


Kirim email ke