(1).sql:='select * from users ';
   open p_cursor for vSQLInfo ; --这样对
  (2)。如果sql 是动态赋值的 然后就报错 java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01003: 语句未进行语法分析
并且 sql语句是正确的,在pl/Sql执行是对的问题补充: 在 ORACLE 动态赋值到一个参数里,然后重组sql语句,并且 组成后付给了了一个字符串
temp varchar2(4000),此时如果输出后,下面执行 open p_cursor for select * from users;
此时输出的语句在pl/SQL中执行是正确的 
但是我如果执行 open p_cursr for temp 就会报上错为什么呢?

解决方案 »

  1.   

    create or replace procedure ap3 is
      type cType is ref cursor;
      c1   cType;  
      vName  varchar2(10);
      vSql   varchar2(4000);
      vTable varchar2(10);
    begin
      vTable := 'a02';
      vSql   := 'select t from ';
      vSql   := vSql || vTable;
      open c1 for vSql;
      loop
        fetch c1
          into vName;
        exit when c1%notfound;
        dbms_output.put_line(vName);
      end loop;
    end ap3;
    SQL> exec ap3;
     
    wwwww
    1
    2
     
    PL/SQL procedure successfully completed
      

  2.   

    写法一样,不知道为什么出错。
     open c1 for select t from a02 where key = 变量;这样是没有问题的