某Q友問題—為何sqlplus中new_value後續的..到底為何含義

wisdomone1發表於2015-06-15

前言

   spool產生的輸出檔案如果用到&變數,其形式為spool &var..log,這2個.到底含義是什麼呢?本文我們測試下這個


測試結論
1,new_value即把select from 中的查詢結果可以傳遞給new_value指定的引數
2,&filedate為變數,此變數用於spool中,後面必須跟2個..,最終擴充套件中為log,顯示出來才是檔名稱.log
3,&filedate後面2個.  表示1個. ,而3個.表示2個.,其實就類似於跳脫字元
   而如果後跟1外.,直接就忽略了這個.
   

測試明細
透過new_value引數化filedate
SQL> col filedate new_value filedate

把系統日期存在到引數filedate
SQL> select to_char(sysdate,'yyyymmddhh24miss') filedate from dual;

FILEDATE
--------------
20150615082504

把上述引數filedate用於spool輸出的檔名稱中,注意後面是2個..
SQL> spool insert_after&filedate..log
SQL> select * from dual;

D
-
X

SQL> spool off;

產生的spool檔案為insert_after加上系統日期.log
SQL> ! ls -ltr

-rw-r--r-- 1 oracle oinstall 286 06-15 08:25 insert_after20150615082504.log

再看下如果是1個.會如何
SQL> spool insert_after&filedate.log
SQL> select * from dual;

D
-
X

1個.則spool生成的檔名稱為insert_after系統日期及log,且自動生成副檔名.lst
SQL> spool off;
SQL> ! ls -ltr

-rw-r--r-- 1 oracle oinstall 286 06-15 08:26 insert_after20150615082504log.lst


查閱官方手冊,獲取spool具體用法
SQL*Plus? User's Guide and Reference
Release 11.2

SPOOL

Syntax

SPO[OL] [file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]] | OFF | OUT]

Stores query results in a file, or optionally sends the file to a printer.

Terms

file_name[.ext]

Represents the name of the file to which you wish to spool. SPOOL followed by file_name begins spooling displayed output to the named file. If you do not specify an extension, SPOOL uses a default extension (LST or LIS on most systems). The extension is not appended to system files such as /dev/null and /dev/stderr.

CRE[ATE]

Creates a new file with the name specified.

REP[LACE]

Replaces the contents of an existing file. If the file does not exist, REPLACE creates the file. This is the default behavior.

APP[END]

Adds the contents of the buffer to the end of the file you specify.

OFF

Stops spooling.

OUT

Stops spooling and sends the file to your computer's standard (default) printer. This option is not available on some operating systems.

Enter SPOOL with no clauses to list the current spooling status.

Usage

To spool output generated by commands in a script without displaying the output on the screen, use SET TERMOUT OFF. SET TERMOUT OFF does not affect output from commands that run interactively.

You must use quotes around file names containing white space.

To create a valid HTML file using SPOOL APPEND commands, you must use PROMPT or a similar command to create the HTML page header and footer. The SPOOL APPEND command does not parse HTML tags.


SET SQLPLUSCOMPAT[IBILITY] to 9.2 or earlier to disable the CREATE, APPEND and SAVE parameters. See SQL*Plus Compatibility Matrix to determine what functionality is controlled by the SET SQLPLUSCOMPAT[IBILITY] command.

主要看上述標色的手冊部分,可知SPOOL預設的輸出檔案如不新增副檔名,預設為lst或者lis

SQL> spool off
SQL> !ls -lrt

-rw-r--r-- 1 oracle oinstall 291 06-15 08:32 onlytest.lst


SQL> host rm -rf *

SQL> !ls -rt

如果後面跟3個.,最終顯示2個.,可見..表示1個.
SQL> spool insert_after&filedate...log
SQL> select 1 from dual;

1
----------
1

SQL> spool off
SQL> !ls -trt
insert_after20150615082504..log


個人簡介

8年oracle從業經驗,具備豐富的oracle技能,目前在國內北京某專業oracle服務公司從事高階技術顧問。
服務過的客戶:
中國電信
中國移動
中國聯通
中國電通
國家電網
四川達州商業銀行
湖南老百姓大藥房
山西省公安廳
中國郵政
北京302醫院     
河北廊坊新奧集團公司

 專案經驗:
中國電信3G專案AAA系統資料庫部署及最佳化
中國聯通CRM資料庫效能最佳化
中國移動10086電商平臺資料庫部署及最佳化
湖南老百姓大藥房ERR資料庫sql最佳化專案
四川達州商業銀行TCBS核心業務系統資料庫模型設計和RAC部署及最佳化
四川達州商業銀行TCBS核心業務系統後端批處理儲存過程功能模組編寫及最佳化
北京高鐵訊號監控系統RAC資料庫部署及最佳化
河南宇通客車資料庫效能最佳化
中國電信電商平臺核心採購模組表模型設計及最佳化
中國郵政儲蓄系統資料庫效能最佳化及sql最佳化
北京302醫院資料庫遷移實施
河北廊坊新奧data guard部署及最佳化
山西公安廳身份證審計資料庫系統故障評估
國家電網上海災備專案4 node rac+adg 
          貴州移動crm及客服資料庫效能最佳化專案
          貴州移動crm及客服務資料庫sql稽核專案
          深圳穆迪軟體有限公司資料庫效能最佳化專案
聯絡方式:
手機:18201115468
qq   :   305076427
qq微博: wisdomone1
新浪微博:wisdomone9
qq群:275813900    
itpub部落格名稱:wisdomone1    http://blog.itpub.net/9240380/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-1700500/,如需轉載,請註明出處,否則將追究法律責任。

相關文章