1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| dev001>
dev001> drop table t;
Table dropped.
dev001> drop procedure pi;
Procedure dropped.
dev001> drop package pq;
Package dropped.
dev001>
dev001> create table t(x int);
Table created.
dev001>
dev001> create procedure pi
2 is
3 t number;
4 begin
5 for c in(select * from t)
6 loop
7 t:= t + c.x;
8 end loop;
9 end;
10 /
Procedure created.
dev001> show errors
No errors.
dev001>
dev001> create package pq
2 is
3 glo number;
4 procedure pq;
5 end;
6 /
Package created.
dev001> show errors
No errors.
dev001>
dev001> create package body pq
2 is
3 procedure pq
4 is
5 t number;
6 begin
7 glo:=2;
8 for c in(select * from t)
9 loop
10 t:= t + c.x;
11 end loop;
12 end;
13 --
14 end;
15 /
Package body created.
dev001> show errors
No errors.
dev001>
dev001> exec pi;
PL/SQL procedure successfully completed.
dev001>
dev001> exec pq.pq;
PL/SQL procedure successfully completed.
dev001>
dev001> alter table t add (y int);
Table altered.
dev001>
dev001> column object_name format a10;
dev001> column object_type format a20;
dev001> select object_name, object_type, status from user_objects
2 where object_name like 'PI%' or object_name like '%PQ';
OBJECT_NAM OBJECT_TYPE STATUS
---------- -------------------- -------
PI PROCEDURE INVALID
PQ PACKAGE VALID
PQ PACKAGE BODY INVALID
dev001>
dev001> exec pi;
PL/SQL procedure successfully completed.
dev001> exec pq.pq;
BEGIN pq.pq; END;
*
ERROR at line 1:
ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package body "XXX.PQ" has been invalidated
ORA-06508: PL/SQL: could not find program unit being called:
"XXX.PQ"
ORA-06512: at line 1
dev001>
dev001> exit |
Partager