Oracle檢視錶、儲存過程、觸發器、函式等物件定義語句
檢視錶、儲存過程、觸發器等物件的定義語句有兩種方法:
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;
DBMS_METADATA.GET_DDL('TABLE','BBS','NEWCCS')
--------------------------------------------------------------------------------
CREATE TABLE "NEWCCS"."BBS"
( "BBSID" NUMBER(16,0),
"SENDER" VARCHAR2(20) NOT NULL ENABLE,
"INCEPT" VARCHAR2(20) NOT NULL ENABLE,
"MSGTITLE" VARCHAR2(40) NOT NULL ENABLE,
"MSG" VARCHAR2(500),
"SENDTIME" DATE DEFAULT sysdate NOT NULL ENABLE,
"MSGTOP" VARCHAR2(1) DEFAULT 0,
"MSGFILENAME" VARCHAR2(100),
"MSGFILE" LONG RAW,
"EDITTIME" DATE DEFAULT sysdate,
CONSTRAINT "PK_BBS" PRIMARY KEY ("BBSID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE
DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "NEWCCS" ENABLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE
DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "NEWCCS"
返回的結果裡面含有一些storage屬性,可以通過設定會話級別來不顯示這些storage屬性。
Example: Fetch the DDL for all Complete Tables in the Current Schema, Filter Out Nested Tables and Overflow Segments
This example fetches the DDL for all "complete" tables in the current schema, filtering out nested tables and overflow segments. The example uses SET_TRANSFORM_PARAM (with the handle value = DBMS_METADATA.SESSION_TRANSFORM. meaning "for the current session") to specify that storage clauses are not to be returned in the SQL DDL. Afterwards, the example resets the session-level parameters to their defaults.
To generate complete, uninterrupted output, set the PAGESIZE to 0 and set LONG to some large number, as shown, before executing your query.
SQL> SET LONG 2000000
SQL> SET PAGESIZE 0
SQL> EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'
STORAGE',false);
PL/SQL 過程已成功完成。
SQL> select dbms_metadata.get_ddl('TABLE','BBS','NEWCCS') from dual;
CREATE TABLE "NEWCCS"."BBS"
( "BBSID" NUMBER(16,0),
"SENDER" VARCHAR2(20) NOT NULL ENABLE,
"INCEPT" VARCHAR2(20) NOT NULL ENABLE,
"MSGTITLE" VARCHAR2(40) NOT NULL ENABLE,
"MSG" VARCHAR2(500),
"SENDTIME" DATE DEFAULT sysdate NOT NULL ENABLE,
"MSGTOP" VARCHAR2(1) DEFAULT 0,
"MSGFILENAME" VARCHAR2(100),
"MSGFILE" LONG RAW,
"EDITTIME" DATE DEFAULT sysdate,
CONSTRAINT "PK_BBS" PRIMARY KEY ("BBSID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
TABLESPACE "NEWCCS" ENABLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
TABLESPACE "NEWCCS"
SQL> EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'
DEFAULT');
PL/SQL 過程已成功完成。
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;
其他的查詢和這個類似,只需修改物件型別即可。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25744374/viewspace-756227/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 檢視錶,儲存過程,觸發器定義的方法儲存過程觸發器
- 檢視錶、檢視、索引、儲存過程和觸發器的定義的方法索引儲存過程觸發器
- 破解儲存過程,函式,檢視,觸發器解密儲存過程函式觸發器解密
- oracle 建立表,序列,索引,檢視,觸發器,函式,儲存過程,定時器,包體Oracle索引觸發器函式儲存過程定時器
- oracle自動生成編譯所有函式、儲存過程、觸發器的語句Oracle編譯函式儲存過程觸發器
- 瞭解使用mysql 的檢視、儲存過程、觸發器、函式....MySql儲存過程觸發器函式
- 儲存過程 檢視 觸發器 序列儲存過程觸發器
- 七、函式-儲存過程-觸發器函式儲存過程觸發器
- 如何匯出儲存過程、函式、包和觸發器的定義語句?如何匯出表和索引的建立語句?儲存過程函式觸發器索引
- oracle儲存過程和觸發器Oracle儲存過程觸發器
- 【MySQL】MySQL(三)儲存過程和函式、觸發器、事務MySql儲存過程函式觸發器
- Oracle 儲存過程 定義 和 優點 與 函式 區別Oracle儲存過程函式
- 第五篇 : MySQL 之 檢視、觸發器、儲存過程、函式、事物與資料庫鎖MySql觸發器儲存過程函式資料庫
- Oracle認證 :Oracle中重新編譯無效的儲存過程,或函式、觸發器Oracle編譯儲存過程函式觸發器
- 檢視和儲存過程相關物件儲存過程物件
- oracle 儲存過程以及plsql語句塊Oracle儲存過程SQL
- Oracle 儲存過程中的DDL語句Oracle儲存過程
- oracle 過程函式定義字典Oracle函式
- MySQL自定義函式與儲存過程MySql函式儲存過程
- Mysql中儲存過程、儲存函式、自定義函式、變數、流程控制語句、游標/遊標、定義條件和處理程式的使用示例MySql儲存過程儲存函式變數
- Sql Server系列:SQL語句查詢資料庫中表、檢視、儲存過程等組成SQLServer資料庫儲存過程
- 儲存過程 函式儲存過程函式
- 儲存過程與儲存函式儲存過程儲存函式
- Entity Framework Code First執行SQL語句、檢視及儲存過程FrameworkSQL儲存過程
- 2020重新出發,MySql基礎,MySql檢視&索引&儲存過程&觸發器MySql索引儲存過程觸發器
- oracle中取得儲存過程、函式等pl sql原始碼的方法Oracle儲存過程函式SQL原始碼
- 儲存過程與函式儲存過程函式
- Oracle儲存過程乾貨(二):PLSQL控制語句Oracle儲存過程SQL
- 函式儲存過程併發控制-案例函式儲存過程
- MySQL儲存過程語句及呼叫MySql儲存過程
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式
- Oracle儲存過程中定義多個遊標Oracle儲存過程
- Oracle中定義package以及儲存過程的使用OraclePackage儲存過程
- Oracle儲存過程乾貨(三):PLSQL迴圈語句Oracle儲存過程SQL
- Oracle中用sql查詢獲取資料庫的所有觸發器,所有儲存過程,所有檢視,所有表...OracleSQL資料庫觸發器儲存過程
- 刪除資料庫中所有儲存過程和函式的sql語句資料庫儲存過程函式SQL
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程 (即函式)MySql儲存過程函式