create or replace procedure pro_name(strSql in varchar2) isv_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)
请各位解答。谢谢

解决方案 »

  1.   

    在oracle里,'select sum(a) as a from 。。
    写成select sum(a) a from .......
    试试看吧,你的其他写法没错。
      

  2.   

    Execute Immediate v_sqlstr Into lsn_a;改成Execute Immediate v_sql Into lsn_a;手误?
      

  3.   


    lsn_a number(10)这里漏掉一个分号了(;)!!
      

  4.   

    你贴一个编译通过的,还有一种可能,你传进去的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;
      

  5.   

    如果是oracle数据库可以直接遍历子树节点进行计算.