plsql - Dynamically use select into statement -
what wrong following function?
create or replace function getnamebyid(myid in number) return number query varchar2(500); myname varchar2(20); begin query :='select users_name :myname users_table users_id = :myid'; execute immediate query using out myname, myid; dbms_output.put_line(myname); return(myname); end getnamebyid; if instead of query use:
select users_name myname users_table users_id = 81; the execution succeeds
the problem when add " :myname " error @ execution..
is not possible use while doing dynamic sql?
edit: solved!
create or replace function getnamebyid(myid in number) return varchar2 query varchar2(500); myname users_table.users_name%type; begin query :='select users_name users_table users_id = :myid'; execute immediate query myname using myid; dbms_output.put_line(myname); return(myname); end getnamebyid;
you cannot bind table names in oracle dynamic sql. need put table name directly dynamic sql. try using following stored procedure instead:
create or replace procedure getnamebyid ( myname in varchar2, myid in number) where_clause varchar2(100) := ' users_id = ' || myid; begin execute immediate 'select users_name ' || myname || ' users_table' || where_clause; end;
Comments
Post a Comment