阿木伯 著 |
|
如何用SQL生成SQL批處理文件? |
|
- 軟件環(huán)境:
1、Windows NT4.0+ORACLE 8.0.4
2、ORACLE安裝路徑為:C:\ORANT
- 問題提出:
1、用戶需要對數(shù)據(jù)庫用戶下的每一張表都執(zhí)行一個相同的SQL操作,這時,一遍、一遍的鍵入SQL語句是很麻煩的
- 實現(xiàn)方法:
SQL> set heading off --禁止輸出列標(biāo)題
SQL> set feedback off --禁止顯示最后一行的計數(shù)反饋信息
列出當(dāng)前用戶下所有同義詞的定義,可用來測試同義詞的真實存在性
select 'desc '||tname from tab where tabtype='SYNONYM';
查詢當(dāng)前用戶下所有表的記錄數(shù)
select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE';
把所有符合條件的表的select權(quán)限授予為public
select 'grant select on '||table_name||' to public;' from user_tables where 《條件》;
刪除用戶下各種對象
select 'drop '||tabtype||' '||tname from tab;
刪除符合條件用戶
select 'drop user '||username||' cascade;' from all_users where user_id>25;
快速編譯所有視圖
----當(dāng)在把數(shù)據(jù)庫倒入到新的服務(wù)器上后(數(shù)據(jù)庫重建),需要將視圖重新編譯一遍,
----因為該表空間視圖到其它表空間的表的連接會出現(xiàn)問題,可以利用PL/SQL的語言特性,快速編譯。
SQL> SPOOL ON.SQL
SQL> SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB;
SQL> SPOOL OFF
然后執(zhí)行ON.SQL即可。
SQL> @ON.SQL
當(dāng)然,授權(quán)和創(chuàng)建同義詞也可以快速進(jìn)行,如:
SQL> SELECT 'GRANT SELECT ON '||TNAME||' TO 用戶名;' FROM TAB;
SQL> SELECT 'CREATE SYNONYM '||TNAME||' FOR 用戶名.'||TNAME||';' FROM TAB;
|
【最后更新:】 |
|