CREATE OR REPLACE PACKAGE pkg_test
AS
   TYPE myrctype IS REF CURSOR;   PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
END pkg_test;
/CREATE OR REPLACE PACKAGE BODY pkg_test
AS
   PROCEDURE get (p_id NUMBER, p_rc OUT myrctype)
   IS
      sqlstr   VARCHAR2 (500);
   BEGIN
      IF p_id = 0 THEN
         OPEN p_rc FOR
            SELECT ID, NAME, sex, address, postcode, birthday
              FROM student;
      ELSE
         sqlstr :=
            'select id,name,sex,address,postcode,birthday
           from student where id=:w_id';
         OPEN p_rc FOR sqlstr USING p_id;
      END IF;
   END get;
END pkg_test;
/

解决方案 »

  1.   

    直接用SQL*Plus跑不就可以了?
    最后加上一个“/”
    如下:
    SQL> CREATE OR REPLACE PACKAGE lix AS
      2  begin
      3  select * from temp;
      4  end;
      5  /警告: 创建的包带有编译错误。
      

  2.   

    kingcs(飞飞飞的鸟)提供的是标准范例,但其中引用了表STUDENT,需要你的具体用户中包含此表才行。
      

  3.   

    创建后如果提示带有编译错误,可以使用SHOW ERROR来显示错误信息
      

  4.   

    我的代码中相应的表已经更换了,“但其中引用了表STUDENT”我不明白???
      

  5.   

    包头只能定义对象,怎能直接写语句,建义楼主多看pl/sql
      

  6.   

    CREATE OR REPLACE PACKAGE lix AS
      2  begin
      3  select * from LX;
      4  end;
      5  /
    抱歉我还是不明白!
    能告诉我个正确的例子吗?
      

  7.   

    楼主创建的是一个包头,在包头里只能定义变量和过程原形,不能有任何操作语句。
    若楼主只想建立一个存储过程,可按如下:
    CREATE OR REPLACE PROCEDURE lix as
    v number ;
    begin
     select count(*) into v from lx;
    end;