Oracle 查看表存储过程触发器函数等对象定义语句的方法

2014-11-24 18:00:15 · 作者: · 浏览: 0

有时候,我们想查看表,存储,触发器等对象的定语语句,有以下两种方法:


1. 查 all_source 表


2. 用 DBMS_METADATA 包。



一. 通过 all_source 表



先来确认下,通过all_source 表可以查看哪些类型的对象:


SQL> SELECT distinct type FROM ALL_SOURCE;


TYPE


------------


PROCEDURE


PACKAGE


PACKAGE BODY


LIBRARY


TYPE BODY


TRIGGER


FUNCTION


JAVA SOURCE


TYPE



从以上的结果我们可以看到,我们可以通过该表查询的对象.



查看存储过程定义语句:


SQL> SELECT text FROM ALL_SOURCE where TYPE='PROCEDURE' AND NAME ='ADDCUSTBUSS';


TEXT


--------------------------------------------------------------------------------


PROCEDURE addcustbuss (


acustid IN custbuss.custid%TYPE,


bussname IN custbuss.businessname%TYPE,


aopid IN custbuss.opid%TYPE,


acreatetime IN custbuss.createtime%TYPE,


aCustTel IN custbuss.CustTel%TYPE,--客户电话


aContact IN custbuss.Contact%TYPE,--联系人


aFeedback IN custbuss.Feedback%TYPE,--客户反馈


asid OUT custbuss.ID%TYPE,


RESULT OUT INTEGER


)


IS


BEGIN


RESULT := -1;



SELECT getarea || TO_CHAR (idseq.NEXTVAL, 'FM0999999999')


INTO asid


FROM DUAL;



INSERT INTO custbuss


(ID, custid, businessname, opid, createtime,CustTel,Contact,Feedback


)


VALUES (asid, acustid, bussname, aopid, acreatetime,aCustTel,aContact,aFeedback


);


RESULT := 0;


EXCEPTION


WHEN OTHERS


THEN


RESULT := -1;


END addcustbuss;


已选择32行。


SQL>



查看触发器 定义语句


SQL> SELECT text FROM ALL_SOURCE where TYPE='TRIGGER' AND NAME ='TRDB_TEAM';


TEXT


-----------------------------------------------------------------------------


TRIGGER "NEWCCS".trdb_team


BEFORE DELETE


ON team


REFERENCING NEW AS NEW OLD AS OLD


FOR EACH ROW


BEGIN


DELETE FROM team_teamgroup_map


WHERE teamid = :OLD.teamid;


END trdb_team;


已选择10行。



方法也比较简单,修改TYPE 和 NAME 就可以。 注意要大写。