查看表、存储过程、触发器等对象的定义语句有两种方法: 1、查ALL_SOURCE表 2、用DBMS_METADATA包 一、通过ALL_SOURCE表 先来确认一下,通过ALL_SOURCE表可以查看哪些类型的对象: SQL> select distinct type from ALL_SOURCE; TYPE ------------ PROCEDURE PACKAGE PACKAGE BODY TYPE BODY TRIGGER FUNCTION TYPE 已选择7行。 这些就是可以通过ALL_SOURCE表查到的对象。 使用方法: SQL> SELECT text FROM ALL_SOURCE where TYPE=’PROCEDURE’ AND NAME=’ADDCUSTBUSS’; 只需修改TYPE和NAME为要查询的类型和名称即可。注意大写! 二、通过DBMS_METADATA包 通过DBMS_METADATA包的get_ddl()方法,可以查看表、索引、视图、存储过程等的定义语句。 用法: SQL>select dbms_metadata.get_ddl(‘对象类型’,’名称’,’用户名’) from dual; 1、查看表的定义语句: SQL>set long 9999999 SQL>select dbms_metadata.get_ddl(‘TABLE’,’BBS’,’NEWCCS’) from dual; 2、查看存储过程的定义语句: SQL> SET LONG 9999 SQL> select dbms_metadata.get_ddl('PROCEDURE','ANALYZEDB','NEWCCS') from dual; CREATE OR REPLACE PROCEDURE "NEWCCS"."ANALYZEDB" IS CURSOR get_ownertable IS SELECT table_name FROM user_tables; ownertable get_ownertable%ROWTYPE; BEGIN OPEN get_ownertable; LOOP FETCH get_ownertable INTO ownertable; EXIT WHEN get_ownertable%NOTFOUND; EXECUTE IMMEDIATE 'analyze table ' || ownertable.table_name || ' compute statistics for table for all indexes for all indexed columns '; END LOOP; EXCEPTION WHEN OTHERS THEN RAISE; END; 其他的查询和这个类似,只需修改对象类型即可。
|