我这样非法:
CREATE OR REPLACE  PROCEDURE "SP_TEST"
(
    v_sql VARCHAR2,
)
AS
    CURSOR sRs IS v_sql;
    dRs sRs%ROWTYPE;
BEGIN
    OPEN sRs;
    LOOP
        fetch sRs INTO dRs;
        EXIT WHEN sRs%NOTFOUND;
        ……
    END LOOP;
    CLOSE sRs;
    RETURN;
END;

解决方案 »

  1.   

    这样是不行的,要用动态 sql才可以。
      

  2.   

    TYPE T_CUR IS REF CURSOR;
    C_SQL T_CUR;
    LS_SQL varchar2(1000);
    --定义sql
        ls_sql:='select bae006,aae035 from ab01';
        OPEN C_SQL FOR LS_SQL;
        LOOP
          FETCH C_SQL INTO LS_BAE006,LS_AAE035;   
          EXIT WHEN C_SQL%NOTFOUND;
          --处理
        END Loop;
        CLOSE C_SQL;
      

  3.   

    我记得在SQL Server的存储过程中只放一条select语句,在程序中调用该存储过程就会返回该select语句返回的记录集。在Oracle的存储过程中怎样返回一个记录集?