比如想要实现返回结果为select * from tablename where ....
该怎么办呢?我直接写的话他编译不通过

解决方案 »

  1.   

    返回游标就行了,例如:create or replace procedure get_tab(o out sys_refcursor) is
    begin
         open o for select * from tablename where col1='aa';
    end;
    /
      

  2.   

    SQL> CREATE OR REPLACE PROCEDURE get_tab(o OUT SYS_REFCURSOR) IS
      2  BEGIN
      3    OPEN o FOR
      4      SELECT * FROM emp WHERE sal > 3000;
      5  END;
      6  /过程已创建。SQL> var o refcursor;
    SQL> exec get_tab(:o);PL/SQL 过程已成功完成。SQL> print o;     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
    ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
          7839 KING       PRESIDENT            17-11月-81           5000                    10SQL>