日期:2014-05-17  浏览次数:20806 次

存储过程的一个有趣的问题!!
1     create   or   replace   package   strings_pkg   is
    2     function   next_token
    3     (base_string   in   varchar2,
    4     looking_for   in   varchar2,
    5     start_looking_at   in   integer,
    6     found_at_position   out   integer)   return   boolean;
    7     function   sub_string
    8       (base_string   in   varchar2,
    9         start_point   in   integer,
  10         end_point   in   integer)   return   varchar2;
  11*   end   strings_pkg;

程序包已创建。

SQL>   declare
    2     str   varchar2(100)   := 'aaa,bbb,ccc,ddd,eee,fff ';
    3     delimeter   varchar2(1)   := ', ';
    4     b     boolean;
    5     found_at   integer;
    6     start_point   integer   :=1;
    7     begin
    8         while
    9             (strings_pkg.next_token
  10                     (str,delimeter,start_point,found_at))
  11     loop
  12           dbms_output.put_line
  13               (strings_pkg.sub_string
  14                       (str,start_point,found_at-1));
  15               start_point   :=   found_at+1;
  16     end   loop;
  17         dbms_output.put_line(substr(str,start_point));
  18     end;
  19     /
declare
*
ERROR   位于第   1   行:
ORA-04068:   已丢弃程序包     的当前状态
ORA-04067:   未执行,package   body   "STUDENT.STRINGS_PKG "   不存在
ORA-06508:   PL/SQL:   无法在调用之前找到程序单元
ORA-06512:   在line   8

在书上抄的一段代码,package   body   "STUDENT.STRINGS_PKG "   不存在   这是什么意思,在上面不是显示包创建成功了吗,

------解决方案--------------------
包分 包头和包体的!

你貌似只写了包头吧。
------解决方案--------------------
一个包需要同时具有包头和包体。

你只写了个包头
------解决方案--------------------
create or replace package body strings_pkg is
(
.................
)