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; 

read here , here more information.


Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -