(    
    p_tname in varchar2 ,
    result out sys_refcursor     
  )        
as        
      
begin        
  OPEN result FOR SELECT * FROM p_tname;      
end; 
错误提示:
Line # = 8 Column # = 19 Error Text = PL/SQL: SQL Statement ignored
Line # = 8 Column # = 33 Error Text = PL/SQL: ORA-00942: 表或视图不存在

解决方案 »

  1.   

    语法错误..
    参考返回游标的例子
    EMP数据库例子
    CREATE OR REPLACE PROCEDURE P_RETR_CURSOR
    (P_ID IN NUMBER,
    P_RECSET OUT SYS_REFCURSOR) AS
    --Created by xsb on 2004-11-09 For: 存储过程返回记录集
    BEGIN
    OPEN P_RECSET FOR
    SELECT e.empno,e.ename
    FROM emp e
    WHERE empno = P_ID;
    END;DECLARE
    I NUMBER;
    S VARCHAR2(100);
    M SYS_REFCURSOR;
    BEGIN
    FOR J IN 7900..7902 LOOP
    P_RETR_CURSOR(J, M);
    FETCH M
    INTO I, S;
    DBMS_OUTPUT.PUT(I || '-');
    DBMS_OUTPUT.PUT_LINE(S);
    CLOSE M;
    END LOOP;
    END;
    /
      

  2.   


    -- 动态语句
    ... ...
    is 
     stmt varchar2(1000);
    begin
     stmt:='select * from '||p_tname; open result for stmt;
    end;
    /
      

  3.   

    create or replace procedure proc_test
    (
    p_tnamein varchar2,
    result out sys_refcursor
    )
    as
    begin
      OPEN result for select *from p_tname;
    end;首先,p_tname这个表预先存在,不然就会报错!