oracle中,在存储过程返回数据集;返回游标的时候报错:PLS-00103: 出现符号 "CREATE";这是什么问题呢?SQL如下:CREATE OR REPLACE PACKAGE  TESTPACKAGE AS
TYPE TEST_CURSOR IS REF CURSOR;
END TESTPACKAGE;CREATE OR REPLACE PROCEDURE TEST1 ( TEST_CUSROR OUT TESTPACKAGE.TEST_CURSOR) AS
BEGIN
OPEN TEST_CURSOR FOR SELECT * FROM test_table;
END TEST1;

解决方案 »

  1.   

    定义写在PACKAGE里面,具体实现的代码要写在PACKAGE BODY里面。
    所以你的PROCEDURE具体实现代码在被包含在PACKAGE BODY里面。
      

  2.   

    PLS-00103 found 'string' but expected one of the following: 'string'"},Cause: This error message is from the parser. It found a token (language element) that is inappropriate in this context.Action: Check previous tokens as well as the one given in the error message. The line and column numbers given in the error message refer to the end of the faulty language construct.
      

  3.   

    CREATE OR REPLACE PROCEDURE TEST1 ( TEST_CUSROR OUT sys_refcursor) AS 
    BEGIN 
    OPEN TEST_CURSOR FOR SELECT * FROM test_table; 
    END TEST1;
      

  4.   

    写成这样:但还是报Error(7,1): PLS-00103: 出现符号 "CREATE";CREATE OR REPLACE PACKAGE  TESTPACKAGE is
    TYPE TEST_CURSOR IS REF CURSOR;
    PROCEDURE TEST1 (TEST_CUSROR OUT SYS_REFCURSOR);
    END TESTPACKAGE;CREATE OR REPLACE PACKAGE BODY TEST_PKG is
    PROCEDURE TEST1 ( TEST_CUSROR OUT TESTPACKAGE.TEST_CURSOR) is
    BEGIN
    OPEN TEST_CURSOR FOR SELECT * FROM bi_request_sim_card;
    END TEST1;
    end TESTPACKAGE;
      

  5.   

    -- TRY THIS ..
    CREATE OR REPLACE PACKAGE TESTPACKAGE IS
    TYPE TEST_CURSOR IS REF CURSOR;
    PROCEDURE TEST1 (TEST_CUSROR OUT TEST_CURSOR);
    END TESTPACKAGE;CREATE OR REPLACE PACKAGE BODY TESTPACKAGE IS
    PROCEDURE TEST1 ( TEST_CUSROR OUT TEST_CURSOR) IS
    BEGIN
        OPEN TEST_CURSOR FOR SELECT * FROM bi_request_sim_card;
    END TEST1;
    end TESTPACKAGE;
      

  6.   

    -- TRY IT ..
    SQL> CREATE OR REPLACE PACKAGE TESTPACKAGE IS
      2  TYPE TEST_CURSOR IS REF CURSOR;
      3  PROCEDURE TEST1 (V_CURSOR OUT TEST_CURSOR);
      4  END TESTPACKAGE;
      5  /Package createdSQL> CREATE OR REPLACE PACKAGE BODY TESTPACKAGE IS
      2  PROCEDURE TEST1 (V_CURSOR OUT TEST_CURSOR) IS
      3  BEGIN
      4      OPEN V_CURSOR FOR SELECT * FROM bi_request_sim_card;
      5  END TEST1;
      6  end TESTPACKAGE;
      7  /Package body created
      

  7.   

    我刚刚也遇到这样的问题,后来发现,包与包体的执行(编译)得分开进行。。-- 运行环境为ORACLE SQL Developer 2.1
    -- 全选, F5
    PACKAGE EMPLOYE 已编译
    Errors: check compiler log-- SHOW ERROR的结果
    10/1           PLS-00103: 出现符号 "CREATE"   -- 分别F5
    PACKAGE EMPLOYE 已编译PACKAGE BODY EMPLOYE 已编译