存储过程的一个有趣的问题!!
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
(
.................
)