SQL/PLUS學習筆記之ECHO和SPOOL的使用
上次我們介紹了:SQL/PLUS學習筆記之編輯緩沖區中的當前行命令,本文我們介紹一下SQL/PLUS學習筆記之ECHO和SPOOL的使用,接下來就讓我們一起來了解一下這部分內容。
ECHO參數的設置:
SQL> show echo --顯示echo的狀態
echo OFF --此時echo是OFF狀態
SQL> set echo on --設置其為開狀態
SQL> show echo
echo ON --已經打開
此時運行腳本的話,腳本中的每條SQL語句或PL/SQL塊將會顯示在終端,如下運行test腳本:
- SQL> @test --其下面均為終端顯示的內容
- SQL> select *from t1 where rownum<2;
- ID NAME
- ---------- --------------------
- 1 Testing
- SQL>
- SQL> truncate table t1;
- Table truncated.
- SQL>
- SQL> begin
- 2
- 3 for i in 1 .. 1000 loop
- 4
- 5 insert into t1 values(i,'Testing');
- 6 end loop;
- 7 commit;
- 8
- 9 end;
- 10 /
- PL/SQL procedure successfully completed.
- SQL>
- SQL> select count(*)from t1;
- COUNT(*)
- ----------
- 1000
使用SPOOL保存查詢的結果集
- SQL> spool outputfile --默認在當前路徑下生成outputfile.lst文件
- SQL> select * from t1 where rownum<3;
- ID NAME
- ---------- --------------------
- 1 Testing
- 2 Testing
- SQL> spool off --終止,此時這些內容全部被寫入文件outputfile中
- [oracle@localhost ~]$ cat outputfile.lst --查看文件內容如下:
- SQL> select * from t1 where rownum<3;
- ID NAME
- ---------- --------------------
- 1 Testing
- 2 Testing
- SQL> spool off
這個功能可以幫助生成一些動態的批量處理的腳本,比方說刪除用戶emcd下的滿足某些條件的表:
- SQL> show user
- USER is "EMCD"
- SQL> spool droptable.sql
- SQL> select 'drop table'||objec_name from user_objects where object_type='TABLE';
- select 'drop table'||objec_name from user_objects where object_type='TABLE'
- *
- ERROR at line 1:
- ORA-00904: "OBJEC_NAME": invalid identifier
- SQL> l
- 1* select 'drop table'||objec_name from user_objects where object_type='TABLE'
- SQL> c/objec_/object_
- 1* select 'drop table'||object_name from user_objects where object_type='TABLE'
- SQL> /
- 'DROPTABLE'||OBJECT_NAME
- --------------------------------------------------------------------------------
- drop tableT1
- drop tableBIN$qokoVJ6g4HHgQAB/AQAzMg==$0
- drop tableTOAD_PLAN_TABLE
- SQL> l
- 1* select 'drop table'||object_name from user_objects where object_type='TABLE'
- SQL> c/'drop table'/'drop table '
- 1* select 'drop table '||object_name from user_objects where object_type='TABLE'
- SQL> /
- 'DROPTABLE'||OBJECT_NAME
- --------------------------------------------------------------------------------
- drop table T1
- drop table BIN$qokoVJ6g4HHgQAB/AQAzMg==$0
- drop table TOAD_PLAN_TABLE
- SQL> spool off --結束輸入
- SQL> !
- [oracle@localhost ~]$ cat droptable.sql --查看輸出內容,如下所示:
- SQL> select 'drop table'||objec_name from user_objects where object_type='TABLE';
- select 'drop table'||objec_name from user_objects where object_type='TABLE'
- *
- ERROR at line 1:
- ORA-00904: "OBJEC_NAME": invalid identifier
- SQL> l
- 1* select 'drop table'||objec_name from user_objects where object_type='TABLE'
- SQL> c/objec_/object_
- 1* select 'drop table'||object_name from user_objects where object_type='TABLE'
- SQL> /
- 'DROPTABLE'||OBJECT_NAME
- --------------------------------------------------------------------------------
- drop tableT1
- drop tableBIN$qokoVJ6g4HHgQAB/AQAzMg==$0
- drop tableTOAD_PLAN_TABLE
- SQL> l
- 1* select 'drop table'||object_name from user_objects where object_type='TABLE'
- SQL> c/'drop table'/'drop table '
- 1* select 'drop table '||object_name from user_objects where object_type='TABLE'
- SQL> /
- 'DROPTABLE'||OBJECT_NAME
- --------------------------------------------------------------------------------
- drop table T1
- drop table BIN$qokoVJ6g4HHgQAB/AQAzMg==$0
- drop table TOAD_PLAN_TABLE
- SQL> spool off
這樣動態刪除某些表的SQL語句就生成了。
關于SQL/PLUS學習筆記之ECHO和SPOOL的使用的知識就介紹到這里了,希望本次的介紹能夠對您有所收獲!
【編輯推薦】
- SQL Server數據庫遠程查詢并批量導入數據
- 存儲過程:sp_MSforeachtable/sp_MSforeachdb
- SQL Server數據庫獲取所有表和數據的批量操作
- 關于使用數據庫登錄名和數據庫用戶名的一些心得
- SQL Server在存儲過程中編寫事務處理代碼的三種方法