网站建设
联系我们

程序之间的依存关系

发布于:2014-02-11 16:27来源:未知 作者:admin 点击:
函数和包等的相互依存关系,甲调用了乙,那么甲就依赖乙。
通过数据字典可以查询依存关系。
SQL> conn / as sysdba
已连接。
SQL> grant create view to scott;
授权成功。
SQL> conn scott/tiger
已连接。
SQL> create view v1 as select ename,sal from emp;
视图已创建。
SQL> select * from USER_DEPENDENCIES where name='V1';
验证刚才建立的视图
建立函数f1,这个函数很简单,返回传入值的2 倍。再存储过程p1 调用了函数f1。
CREATE OR REPLACE FUNCTION f1
     (v1 IN number)
     RETURN NUMBER
       IS
BEGIN
     RETURN (v1*2);
END ;
/
CREATE OR REPLACE PROCEDURE p1(v_in in number)
     IS
      v2 number;
BEGIN
     v2:=f1(v_in);
END p1;
/
select * from USER_DEPENDENCIES where name='P1' OR NAME='F1';
这句话可以查询到依存关系。
存在公共同意词,而后又存在相应的同名称的表
conn / as sysdba
drop public synonym eee;
create public synonym eee for hr.employees;
conn hr/hr
grant select on employees to scott;
conn scott/tiger
drop view v1;
create view v1 as select last_name from eee where rownum<5;
select * from v1;
create table eee as select * from hr.employees where rownum<10;
--对象失效
select object_name,status from user_objects;
select * from v1;
--自动得编译,有效了
select object_name,status from user_objects;
-------------------------直接和间接依赖----------------
conn / as sysdba
@%ORACLE_HOME%\rdbms\admin\utldtree.sql
--建立了序列和表,以及两个视图
--将指定的存储过程依存关系保存的表中
execute deptree_fill('procedure', 'scott', 'p1');
--查询视图,查看层次关系
col name for a5
select * from deptree;
NESTED_LEVEL TYPE SCHEMA NAME SEQ#
------------ ------------------- ------------------------------ ----- ----------
0 PROCEDURE SCOTT P1 0
select * from ideptree;
DEPENDENCIES
---------------------
PROCEDURE SCOTT.P1
--在scott 建立存储过程p2,依赖p1
conn scott/tiger
CREATE OR REPLACE PROCEDURE p2
   IS
BEGIN
     p1(100);
END;
/
conn / as sysdba
execute deptree_fill('procedure', 'scott', 'p1');
SQL> select * from deptree;
NESTED_LEVEL TYPE SCHEMA NAME SEQ#
------------ ------------------- ------------------------------ ----- ----------
0 PROCEDURE SCOTT P1 0
1 PROCEDURE SCOTT P2 1
SQL> select * from ideptree;
DEPENDENCIES
-----------------------------------------------------------------------------------
PROCEDURE SCOTT.P2
PROCEDURE SCOTT.P1
conn / as sysdba
execute deptree_fill('function', 'scott', 'f1');
SQL> select * from deptree;
NESTED_LEVEL TYPE SCHEMA NAME SEQ#
------------ ------------------- ------------------------------ ----- ----------
0 FUNCTION SCOTT F1 0
1 PROCEDURE SCOTT P1 2
2 PROCEDURE SCOTT P2 3
SQL> select * from ideptree;
DEPENDENCIES
-----------------------------
PROCEDURE SCOTT.P1
PROCEDURE SCOTT.P2
FUNCTION SCOTT.F1
tag标签:
------分隔线----------------------------
------分隔线----------------------------