Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

ORA-00900: invalid SQL statement error in procedure

884024Aug 23 2011 — edited Aug 29 2011
In procedure we referring only 2 tables


Tables:
1) Edw_orders_ref
2) Change_pl


Condisition:

1) whenever edw_orders_ref.product=change_pl.product and edw_orders_ref.opt=change_pl.opt condisition satisfied then update edw_orders_ref.pl with change_pl.pl column.
2) we pass table name and day values as arguments to the procedure.
3) Based on day column data only we update.
4) Heir day column means partisition values of the table

Procedure is:

create or replace procedure Proc_update_target(P_Day varchar2,p_tablename nvarchar2)
as

TYPE PlCurTyp IS REF CURSOR;
Pl_cv PlCurTyp;
--emp_rec edw_orders_ref%ROWTYPE;
pl_rec Edw_orders_ref.pl%type;
product_rec Edw_orders_ref.product%type;
opt_rec Edw_orders_ref.opt%type;
sql_stmt varchar(3200);

n number:=0;

BEGIN

sql_stmt := 'select lpl.opt,lpl.product,lpl.pl from minddba.change_pl lpl
where exists ( select 1 from '|| p_tablename ||' where '||p_tablename||'.product=lpl.product and '||p_tablename||'.opt=lpl.opt
and '||p_tablename||'.day='||P_Day||' )';

dbms_output.put_line('hi');
OPEN pl_cv FOR sql_stmt ;
LOOP
dbms_output.put_line('hello1');
FETCH Pl_cv INTO pl_rec,product_rec,opt_rec;
EXIT WHEN Pl_cv%NOTFOUND;
dbms_output.put_line('hello');
execute immediate
'update '||p_tablename||' set pl=:rpl
where product=:rproduct
and opt=:ropt
AND day=:day' using pl_rec, product_rec,opt_rec,P_Day;

if Pl_cv%rowcount=10000 then
commit;
end if;

END LOOP;
CLOSE pl_cv;

commit;
exception
when others then
dbms_output.put_line('Error while updating target pl:'||SQLERRM);
end;


it is compile nad debug.

but execution time this error was coming

exec Proc_update_target('20110226','edw_orders_ref')


hi
hello1
hello
Error while updating target pl:ORA-00900: invalid SQL statement


i think in that procedure updata statement is wrong,if any one corect them.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 26 2011
Added on Aug 23 2011
11 comments
1,771 views