我想在oracle中的一个存储过程里,执行一条select语句,工具总是提示错误,说必须要用select into 语句,我用了select into 语句果然就
行了,但是我现在必须只能用select 语句 怎么办?

解决方案 »

  1.   

    你select 语句结果 要么放到游标里,要么放到变量里
      

  2.   

    不可以的,你必须要使用select into
    PLSQL程序块中是不可以直接使用select的
    你如果想使用结果集,可以使用游标
      

  3.   


    必须用into或者是open cursor的方式
      

  4.   

    用动态sql就可以
    excute immedite ‘sql’;
      

  5.   

    也就是说PLSQL是不可能直接返回结果集的,别想了。这点我也想不通,ORACLE为什么要这么做么?
    你可以这样:
    1,建包:目的是建立一个游标类型,来存放指向结果集的那个游标,其实是个指针。
       CREATE OR REPLACE PACKAGE mypackage 
       AS TYPE myrefRs REF CURSOR;
       END mypackage;
       /
    2,建立存储过程:目的是将游标指向结果集。
       CREATE OR REPLACE PROCEDURE myprocRs(cursorRs OUT mypackage.myrefRs)
       AS 
       BEGIN
           OPEN cursorRs FOR SELECT * FROM yousTableName;
       END myprocRs;
       /
    3, 接下来在你的程序里面调用存储过程,得到输出参数cursorRs的指向的结果集,循环取得即可。
    如果需要程序处理这个结果集的代码可以给我发信,我给你发个过去,或者到网上随便找找,都有。
      

  6.   

    正确的语法是EXECUTE IMMEDIATE 'SQL' INTO VARS;
      

  7.   

    那看要做什么事了
    我只要锁记录的话就不用into了