日期:2014-05-17  浏览次数:20740 次

关于执行动态SQL问题??
create   or   replace   procedure pro_name(strSql   in   varchar2)   is

v_sql   varchar(2000);
lsn_a   number(10)

begin

  v_sql:= 'select   sum(a)   as   a   from   tablename   where   '||strSql;
  Execute   Immediate   v_sqlstr   Into   lsn_a;

end   pro_name;

编译通过,但测试出现错误:未预期的   SQL   命令结尾(指向这行 Execute   Immediate   v_sqlstr   Into   lsn_a)
请各位解答。谢谢

------解决方案--------------------
你贴一个编译通过的,还有一种可能,你传进去的strsql有问题。
我用你的例子改成一个脚本,根本没有问题。。你看看你传进去的参数吧。。

Declare
strwhere Varchar2(400);
v_sql varchar(2000);
lsn_a number(10);

begin
strwhere := 'tabtype = ' 'TABLE ' ' ';
v_sql:= 'select count(*) a from tab where '||strwhere;
Execute Immediate v_sql Into lsn_a;
dbms_output.put_line(lsn_a);

End;