(各路高手请进,搞了两天没有搞出来)一个拼装SQL语句的问题
我有个数组lv_procedure,里面存放的存储过程名。我想动态的调用那些存储过程。过程总共有四个参数,两上输入:lv_fromdate,:lv_enddate是日期型的;两个输出变量,lv_return 字符型的,lcur_flow是游标型的.我做如下拼,不行。编译通过,但是运行会报错。
ORA-01008:并非所有变量都已关联
ORA-06512:在 line3
lv_execsql := 'begin pkg_report_public. '||lv_procedure(ln_len)|| '(:lv_fromdate,:lv_enddate,:lv_return,:lcur_flow); end ; ';
execute immediate lv_execsql;
然后我改成这样写也不行:
lv_execsql := 'begin pkg_report_public. '||lv_procedure(ln_len)|| ';end; '
execute immediate lv_execsql using lv_fromdate,lv_enddate,lv_return,lcur_flow;
报错:pls-00306:调用过程时参数数量或类型错误。lcur_flow 不是SQL类型
请问高手们,我该如何拼这条语句,并动态执行他。
------解决方案--------------------lv_execsql := 'begin pkg_report_public. '||lv_procedure(ln_len)|| '(:lv_fromdate,:lv_enddate,:lv_return,:lcur_flow); end ; ';
execute immediate lv_execsql using lv_fromdate,lv_enddate,lv_return,lcur_flow;
------解决方案--------------------lv_execsql := 'begin pkg_report_public. '||lv_procedure(ln_len)|| '(:1,:2,:3,:4); end ; ';
execute immediate lv_execsql using lv_fromdate,lv_enddate,out lv_return,out lcur_flow;