Executing Dynamic Sql query in Oracle -
i have select query in have a dynamic where condition. thing when try concatenate where condition parameter sql query not allowing me save procedure.
eg:
create procedure usp_mysearchquery ( qtype in int, out_cur out sys_refcursor ) dyn_query varchar2; begin if qtype=1 dyn_query :=' between 1 , 2'; else dyn_query :='=10'; end if; open out_cur select * mytable type=qtype , id || dyn_query; end; this how procedure looks like. tried execute immediete in documentation itself, written wont work multiple row query.
in mssql have exec(not sure) command can execute text sent command. in same way have commands can run dynamic query in oracle
update: answer i tried this.
open out_cur ' select * mytable type=:qtype , id ' || dyn_query using qtype; and worked
the dynamic string has enclosed within 'single quotes'
open out_cur 'select * mytable id '|| dyn_query; execute immediate allows multi row result, if use bulk collect
example:
declare type myarray table of varchar2(100); v_array myarray; begin execute immediate 'select ''x'' dual union select ''y'' dual' bulk collect v_array; in 1..v_array.count loop dbms_output.put_line(v_array(i)); end loop; end; execute immediate using bind variables;
string := 'select * emp name = :name , age = :age , :name <> ''mahesh'''; execute immediate string using 'mahi',21,'mahi'; <or> execute immediate string using proc_variable1,proc_variable2,proc_variable1;
Comments
Post a Comment