欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle存储过程的有关问题 急

更新时间: 2014-01-05 02:14:15 责任编辑: Author_N1

 

oracle存储过程的问题 急!!
这个存储过程,目的是从数据库中查找某个表相关的触发器和存储过程
但是执行的时候,只能执行出第一段找出触发器,第二段存储过程那段没有执行,没有报错
这是咋个问题?

create or replace procedure relation(tname varchar2) is
begin

FOR I IN (SELECT * FROM sys.dba_triggers) LOOP
     IF INSTR(I.TRIGGER_BODY, LOWER(tname)) > 0 OR INSTR (I.TRIGGER_BODY, UPPER(tname)) > 0 THEN
     INSERT INTO TABLE_RELATED VALUES (UPPER(tname),I.TRIGGER_NAME,1,'');
     END IF;
     DELETE FROM TABLE_RELATED A WHERE A.ROWID > (SELECT MIN(B.ROWID) FROM  TABLE_RELATED B WHERE A.TABLE_NAME = B.TABLE_NAME AND A.RELATED_NAME = B.RELATED_NAME AND A.RELATED_TYPE = 1 ); 
     COMMIT;
END LOOP;

FOR K IN (SELECT * FROM sys.all_source  WHERE sys.all_source.type = 'PROCEDURE' AND sys.all_source.owner NOT LIKE ('%SYS%')) LOOP
    IF INSTR(K.TEXT, LOWER(tname)) > 0 OR INSTR(K.TEXT,UPPER(tname)) > 0 THEN
       INSERT INTO TABLE_RELATED VALUES (UPPER(tname),K.NAME,3,'');       
    END IF;
    DELETE FROM TABLE_RELATED A WHERE A.ROWID > (SELECT MIN(B.ROWID) FROM  TABLE_RELATED B WHERE A.TABLE_NAME = B.TABLE_NAME AND A.RELATED_NAME = B.RELATED_NAME AND A.RELATED_TYPE = 3 ); 
    COMMIT;
END LOOP;

end;


--参考方法--
引用:
Quote: 引用:

直接查这个视图就可以了DBA_DEPENDENCIES,没必要写存储

这个里面没有显示哪个存储过程对应的表啊

有表啊,除非你用了动态SQL,一般肯定会显示的
select * from DBA_DEPENDENCIES where REFERENCED_NAME='...'
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:14:15
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7347/
本文WWW.DOC100.NET DOC100.NET版权所有。