導航:首頁 > 程序命令 > sqlplusstart命令參數

sqlplusstart命令參數

發布時間:2022-09-09 17:26:28

1. oracle sqlplus命令行工具如何啟動

  1. 打開命令行窗口界面,可以同時按住「ctrl+R」鍵,在彈出來的運行窗口中輸入cmd。

  2. 啟動oracle服務,在命令行窗口中輸入「net start oracleserviceXXXX」後面的XXXX實際是需要根據您自己的資料庫實例名進行替換。如果您不知道,可以看下「計算機管理」界面下的服務中,能不能找到服務名類似的服務。提示「服務已經啟動成功」就說明服務啟動起來了。

  3. 啟動監聽程序,在命令行窗口輸入lsnrctl start,等到提示「命令執行成功」就可以了。

  4. 接下來就開始載入資料庫實例了。在命令行窗口輸入「sqlplus / as sysdba」登錄到一個空閑的常式。

  5. 登錄完成後,輸入「startup」。這個過程可能有點慢,直到出現「資料庫已經打開」則表示實例啟動成功了。

    如果還有不清楚的,可以自己去ITjob網看視頻操作。希望能幫助到你。

2. 如何實現批處理文件傳參數給SQLPLUS

如果直接想執行SQL就用這樣的命令行格式就行了:sqlplus system/system@srv @a.sql
如果需要把一堆類似「system/system@srv @a.sql」的參數寫在一個文件里,然後逐一執行那就這樣:
for /f "delims=" %i in ("my_sql_para.txt") do @start sqlplus %i
不過這種方式要考慮一個問題,批處理的循環是不會等待結果運行是否結束的,為了保證參數文件里每行都執行,就用了start直接啟動命令。但是如果前後兩個語句都對同一個表做有邏輯關聯性的操作,可能執行結果會不對。
後一種方式供您參考吧,還是建議用前一種方式,畢竟oracle管理事務比您自己管理事務要穩妥。

3. oracle怎樣創建樣例資料庫

Oracle資料庫實例的創建、刪除、修改
以SUSE10SP2、Oracle10gR2為例。
本文中的資料庫實例這一稱謂應該換做資料庫更為准確,資料庫可以理解為是一個物理的靜態概念,主要包括一些物理存在的資料庫文件,而資料庫實例則是一個動態概念,包括一些內存區域以及若干進程,資料庫實例是對資料庫進行操作的執行者。(20090714修改)
安裝完Oracle資料庫系統的安裝後,需要創建資料庫實例才能真正開始使用Oracle資料庫服務。
總結起來,Oracle有三種創建資料庫實例的方法。
第一種,最常用也最簡單,那就是通過DBCA(Database Configuration Assistant),這是Oralce提供的一個圖形界面的資料庫實例配置工具,通過它可以創建、刪除和修改資料庫實例,它的使用也比較簡單、易懂,互動式的圖形界面操作,非常准確有效的提示與配置,是一個比較方便的創建資料庫實例的方式。
按照DBCA給出的提示,很容易創建一個新資料庫實例。
在創建資料庫的時候,DBCA還提供了兩個選項,讓你可以根據剛剛設置好的參數生成一個資料庫實例模板和一份資料庫實例創建腳本。這兩個東西是非常好,非常有用的東西,資料庫模板由Oracle自己管理維護,已經創建好的資料庫實例模板可以在DBCA圖形程序新建資料庫實例時作為模板來使用,另外在DBCA使用responseFile文件或者命令行參數創建資料庫時也需要用到(見後面介紹);資料庫創建腳本是一組腳本,包括shell腳本和sql腳本,這些腳本共同實現一個功能,那就是按照你之前在DBCA中設置好的那樣創建一個資料庫實例(後面也會有介紹),你需要做的只是將這些腳本在你的代碼中調用起來。當然,你也可以選擇只生成資料庫模板或者資料庫腳本,而不用去創建一個真的資料庫(這通常很費時間)。
Oracle資料庫實例的創建、刪除、修改
DBCA是一個非常強大的工具,上面看到的只是DBCA最常用的創建一個資料庫實例的使用,其實DBCA還提供另外兩種使用方法,分別是responseFile和命令行帶參調用。
先說DBCA的responseFile使用方法,responseFile這個東東並不陌生,前文講的Oracle自動安裝就是使用responseFile完成的,DBCA的responseFile使用方法和Oracle安裝程序的responseFile使用方法基本一致。但DBCA的responseFile的來源只能是Oracle安裝包中提供的模板文件,而不能向Oracle安裝程序的responseFile一樣,先自己record一個,然後再用這個record去指導Oracle的自動安裝。從Oracle安裝包中獲取到DBCA的responseFile模板文件後,你可以根據自己的需要編輯修改該模板文件,以完成對資料庫實例的某些參數設置(DBCA圖形界面所提供的參數設置,responseFile中都可以設置,而且該responseFile模板文件的注釋寫的很好,你完全不用擔心無法搞定那些繁雜的資料庫實例參數設置,贊Oralce一個!)。該模板文件在Oracle安裝包中的位置一般在${ORACLE_PACKAGE}/response目錄下。
有了responseFile之後,你只需在調用DBCA的時候指定responseFile的位置和另外一些參數:
dbca [-silent|-progressOnly] -responseFile responseFile名稱
其中-silent|-progressOnly選項意義和Oracle安裝程序命令行參數中的同名選項一樣,表示完全字元界面自動安裝或者帶圖形提示界面的半自動化安裝。
responseFile名稱當然就是responseFile的具體位置了。
但是,有一點不是很好,那就是使用DBCA的responseFile方式創建Oracle資料庫實例,需要事先已經存在一個資料庫實例模板了,在responseFile中再指定該資料庫實例模板名,然後DBCA再依據這個已有的資料庫實例模板完成新資料庫實例的創建,所以就會有前面講到的DBCA圖形界面創建資料庫實例時提供生成資料庫實例模板的選項(資料庫實例模板也可以從一個已有資料庫實例生成),就是在這要用到的。
從上面調用DBCA使用responseFile的命令中,應該已經看到了DBCA是提供一些命令行參數選項的,其實DBCA提供的命令行參數選項遠比你想像的強大,甚至可以這么說,所有DBCA圖形界面和responseFile能夠辦到的事,通過DBCA豐富的命令行參數選項都可以辦到。你在DBCA圖形界面上設置的參數或者在responseFile中指定的參數值都可以通過DBCA的命令行參數選項來進行設置,所以你完全可以只通過DBCA的命令行帶參調用來完成一個資料庫實例的創建(當然也包括刪除、修改資料庫實例等所有DBCA圖形界面所能提供的功能)。其實,我更願意這樣認為,DBCA的responseFile應用也是一種DBCA命令行帶參調用的使用。需要注意的是,當DBCA的命令行參數和responseFile同時設置一個參數時,命令行參數的優先順序是比responseFile要高的。另外,使用DBCA命令行帶參調用新建資料庫實例和使用responseFile新建資料庫實例一樣,也是需要事先已經存在一個資料庫實例模板,才能完成新資料庫實例的創建。一份非常詳細的DBCA所有命令行參數選項列表,你可以通過執行dbca -help獲得。
到現在你可能已經發現,DBCA圖形界面、DBCA的responseFile使用以及DBCA的命令行帶參調用,其實是三個分別具備完全資料庫實例設置功能的工具或者介面,分別對應不同的應用場景,它們可以滿足你幾乎所有的應用需求(使用這樣的工具來幫助構建自己的軟體真是非常愜意的一件事情,再贊Oracle一個!)。
第二種是通過腳本(是否稱為命令行方式更合適,下文描述的腳本方式其實都是命令行方式的非互動式方法,或者說命令行的自動化方式,但其實所有腳本方式都可以將shell腳本或sql腳本中的shell命令、sqlplus命令拆分出來,手工在shell中或者sqlplus界面中進行互動式的輸入執行,這可以稱為命令行的手工方式)來完成資料庫實例的代碼中自動創建。這里說的腳本包括shell腳本和sql腳本,這種方式可以說是最適合與編程結合的,因為這些shell腳本或者sql腳本都可以直接在shell命令中調用執行,所以可以很好與shell編程相結合。而這其實是基於一個非常重要的事實,即Oracle提供了一個互動式的命令行工具sqlplus(類似與DB2的db2cmd),這個工具可以認為是一個Oracle資料庫管理工具,通過它可以執行一些Oracle的資料庫管理命令,來完成一些資料庫管理工作(這當然就包括資料庫實例的創建),同時你也可以把它當作一個SQL語句執行器,直接在里邊執行你想要執行的SQL語句或者存儲過程等,並獲取執行結果。並且,更重要的是,sqlplus可以直接在shell命令行中進行非互動式的調用執行(通常是調用執行一段sqlplus語句,或者是一個由一些sqlplus語句組成的sql腳本,我所說的sqlplus語句包括Oracle資料庫管理維護命令、SQL語句和存儲過程等),這就為在shell編程中使用sqlplus完成資料庫實例自動創建工作提供了可能。
shell命令行中非互動式調用sqlplus執行一段sqlplus語句是利用shell編程中重定向命令的一個特性,即分隔符重定向輸入。一般用法如下:
command<<任意自定義分隔符
>(換行)內容
>(換行)內容
>自定義分隔符
shell中遇到<<則會自動將下一個單詞認作分隔符,並將分隔符後面的文本當作command命令執行的內容傳遞給command依次全部執行直至遇到下一個分隔符單詞才結束。這里的分隔符可以是任意自定義的單詞,通常使用EOF,舉例:
sqlplus / as sysdba<<EOF
startup nomount;
select * from v$version;
shutdown immediate;
exit;
EOF
這段shell程序調用sqlplus執行了若干sqlplus語句,用來啟動資料庫實例,查詢資料庫版本信息,然後關閉資料庫實例,退出sqlplus。
shell命令行中非互動式調用sqlplus執行一個sql腳本是利用sqlplus本身提供的命令行參數。在sqlplus界面中可以通過start命令和@命令來執行一個sql腳本,兩者功效相同,用法如下:
SQL>start sql腳本絕對路徑;
SQL>@sql腳本絕對路徑;
而在shell命令行中可以使用@來完成sqlplus對sql腳本的調用執行,舉例:
sqlplus / as sysdba @./MySQL.sql
以上命令會調用sqlplus執行當前目錄下的MySQL.sql腳本。
使用腳本來完成資料庫實例的創建工作,也分為兩種情況。
一種是誠如前文所述的那樣,在使用DBCA圖形工具創建資料庫實例的同時生成一份資料庫實例創建腳本(包括若干shell腳本和sql腳本),那麼你就可以使用這份腳本,在shell中進行調用,完成資料庫實例的代碼自動創建。使用這份資料庫實例創建腳本創建的新資料庫實例和原資料庫實例是完全一樣,當然,你可以將生成的腳本進行修改,以完成你對資料庫實例的某些設置,但是請在你對腳本內容已經足夠了解,並且知道你自己在干什麼的情況下修改腳本,否則你很有可能使用修改後的腳本無法正確創建資料庫實例。這種方法中shell腳本對sqlplus的使用,更多的是使用sqlplus來執行一些Oracle生成的sql腳本(這些sql腳本的內容是就是一些sqlplus語句的集合,它們的任務就是完成資料庫實例的創建以及設置)。
另一種情況則是不依靠DBCA生成的腳本,完全由自己來編寫實現一份shell腳本,在腳本中你可以調用sqlplus執行一段sqlplus語句或者其它一些sql腳本,以完成資料庫實例的創建和設置,這完全取決於你的實現;而最常用的用來創建資料庫實例的一個方法就是在sqlplus中使用create database語句,create database語句提供了許多豐富的選項和參數設置,確保你能完全創建一個自己所需要的資料庫實例。當然,還有一些其它方法可以創建資料庫實例,比如調用執行oracle提供某些存儲過程等。
至於create database語句的詳細介紹可以參考oracle的sql reference。
第三種嚴格來說不能算作一種創建Oracle資料庫實例的方法,它是通過已有的資料庫實例為基礎來完成新資料庫實例的創建的。這種方法是首先通過第一種或者第二種方法來創建好一個資料庫實例,然後將該資料庫實例的物理文件進行備份,然後直接使用備份的物理文件恢復出一個與原資料庫實例完全一樣新的資料庫實例,所以這種方法需要和第一、二種方法相配合才能使用。這種方法其實已經屬於Oracle數據備份與恢復的范疇了,就是Oracle數據備份恢復方式中的物理備份恢復,所以這種方法可以叫做物理恢復法。
簡單介紹物理恢復法,首先將一個已經存在資料庫實例(最好已關閉)進行物理備份,所謂物理備份其實就是復制該資料庫實例所使用的操作系統文件,這些文件主要包括DataFiles、RedoLogs、ControlFiles和UndoFiles(這些文件一般存在於$ORACLE_HOME/oradata目錄下),進行資料庫實例恢復的時候只需將備份的操作系統文件復制到新的oradata目錄下即可,可以直接啟動使用恢復後的該資料庫實例。不難看出,這種備份恢復是依賴於操作系統平台的。
詳細的物理備份和恢復介紹可以參考oracle的backup and recovery basics以及backup and recovery advanced user's guide。
說完了資料庫實例的創建,現在來說說資料庫實例的刪除和修改。其實介紹完了資料庫實例的創建,資料庫實例的刪除和修改就非常簡單了。基本和前文資料庫實例創建的內容相一致,且比較而言更簡單。
資料庫實例的刪除從上文中資料庫實例的創建不難得到,大致有兩種方法,DBCA工具和命令行方式。
DBCA工具除了能夠用來創建資料庫實例,當然也能夠用來刪除資料庫實例了,且同樣可以用使用responseFile或者命令行帶參調用等方法來完成資料庫實例的刪除,請參考資料庫實例創建部分。
命令行刪除資料庫實例的方式,嚴格來講,是使用一組sqlplus命令來完成資料庫實例的刪除,這組sqlplus命令可以組織在一個sql腳本中,然後在shell命令行中調用sqlplus程序來執行該sql腳本,或者直接在shell命令行中利用shell程序重定向特性調用sqlplus依次完全執行這組sqlplus命令,再或者使用手工的互動式輸入執行,使用方法請參考資料庫實例創建部分。
其中涉及到的sqlplus命令參考以下:
SQL>startup restrict mount;
SQL>drop database;
使用sqlplus命令刪除資料庫實例,必須先以restrict mount方式將資料庫實例載入(但不打開),然後使用drop database語句刪除該資料庫實例。
資料庫實例的修改和資料庫實例的創建,情況類似,DBCA方式或者命令行方式。只要是DBCA方式能夠修改的資料庫實例參數,命令行方式也都能辦到。

4. sqlplus /nolog 是什麼意思

sqlplus命令格式如下:用法: SQLPLUS [ [<option>] [<logon>] [<start>] ] 其中<option> ::= -H | -V | [ [-M <o>] [-R <n>] [-S] ] <登錄> ::= <用戶名>[/<口令>][@<connect_string>] | / | /NOLOG<啟動> : : = @<文件名>[.<ext>] [<參數> ...] "-H" 顯示 SQL*Plus 的版本標幟和使用語法 "-V" 顯示 SQL*Plus 的版本標幟 "-M <o>" 使用 HTML 標志選項 <o> "-R <n>" uses restricted mode <n> "-S" uses silent mode/nolog是不登陸到資料庫伺服器的意思 如果沒有/nolog參數,sqlplus會提示你輸入用戶名和密碼如果在sql*plus環境中使用shutdown命令關閉了資料庫,現在要啟動資料庫的話,必須先用不登陸到資料庫伺服器的方式進入sqlplus環境,再用startup命令啟動資料庫。因為資料庫沒有啟動的話,不能登陸資料庫,也無法驗證用戶名和密碼。sqlplus /nolog --運行sqlplus命令,進入sqlplus環境,nolog參數表示不登錄; SQL> connect / as sysdba --以系統管理員(sysdba)的身份連接資料庫;如果需要對資料庫進行管理操作,那麼需要以這種方式登錄資料庫,或者 connect sys@service_nameas sysdba,其中service_name 你配置的客戶tnsname服務名. SQL> startup --如果資料庫沒有啟動的話,經過上述步驟連接後,正常啟動數據 1,sqlplus '/ as sysdba '和 2,sqlplus /nolog SQL> connect / as sysdba1和2是一樣的意思。

5. sqlplus連接oracle資料庫

1.都是用戶登錄。。sqlplus test/test是系統命令下的登錄,而connect(或者conn)是sqlplus下用戶切換的命令。
2.沒有@service_name是登錄本地庫,不需要經過監聽器(listener)。加@service_name是通過監聽連接庫(成功的前提是你的tnsnames.ora配置好,網路暢通,資料庫端監聽開啟,sqlnet.ora設置好),遠程連接的時候必須要通過監聽才行,當然登錄本地庫也可以通過監聽。

6. SQL*PLUS的相關命令

下面就介紹一下一些常用的sql*plus命令:
1. 執行一個SQL腳本文件
SQL>start file_name
SQL>@ file_name
我們可以將多條sql語句保存在一個文本文件中,這樣當要執行這個文件中的所有的sql語句時,用上面的任一命令即可,這類似於dos中的批處理。
@與@@的區別是什麼?
@等於start命令,用來運行一個sql腳本文件。
@命令調用當前目錄下的,或指定全路徑,或可以通過SQLPATH環境變數搜尋到的腳本文件。該命令使用是一般要指定要執行的文件的全路徑,否則從預設路徑(可用SQLPATH變數指定)下讀取指定的文件。
@@用在sql腳本文件中,用來說明用@@執行的sql腳本文件與@@所在的文件在同一目錄下,而不用指定要執行sql腳本文件的全路徑,也不是從SQLPATH環境變數指定的路徑中尋找sql腳本文件,該命令一般用在腳本文件中。
如:在c: emp目錄下有文件start.sql和nest_start.sql,start.sql腳本文件的內容為:
@@nest_start.sql - - 相當於@ c: emp est_start.sql
則我們在sql*plus中,這樣執行:
SQL> @ c: empstart.sql
2. 對當前的輸入進行編輯
SQL>edit
3. 重新運行上一次運行的sql語句
SQL>/
4. 將顯示的內容輸出到指定文件
SQL> SPOOL file_name
在屏幕上的所有內容都包含在該文件中,包括你輸入的sql語句。
5. 關閉spool輸出
SQL> SPOOL OFF
只有關閉spool輸出,才會在輸出文件中看到輸出的內容。
6.顯示一個表的結構
SQL> desc table_name
7. COL命令:
主要格式化列的顯示形式。
該命令有許多選項,具體如下:
COL[UMN] [{ column|expr} [ option ...]]
Option選項可以是如下的子句:
ALI[AS] alias
CLE[AR]
FOLD_A[FTER]
FOLD_B[EFORE]
FOR[MAT] format
HEA[DING] text
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
LIKE { expr|alias}
NEWL[INE]
NEW_V[ALUE] variable
NOPRI[NT]|PRI[NT]
NUL[L] text
OLD_V[ALUE] variable
ON|OFF
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
1). 改變預設的列標題
COLUMN column_name HEADING column_heading
For example:
Sql>select * from dept;
DEPTNO DNAME LOC
---------- ---------------------------- ---------
10 ACCOUNTING NEW YORK
sql>col LOC heading location
sql>select * from dept;
DEPTNO DNAME location
--------- ---------------------------- -----------
10 ACCOUNTING NEW YORK
2). 將列名ENAME改為新列名EMPLOYEE NAME並將新列名放在兩行上:
Sql>select * from emp
Department name Salary
---------- ---------- ----------
10 aaa 11
SQL> COLUMN ENAME HEADING 』Employee|Name』
Sql>select * from emp
Employee
Department name Salary
---------- ---------- ----------
10 aaa 11
note: the col heading turn into two lines from one line.
3). 改變列的顯示長度:
FOR[MAT] format
Sql>select empno,ename,job from emp;
EMPNO ENAME JOB
---------- ---------- ---------
7369 SMITH CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
Sql> col ename format a40
EMPNO ENAME JOB
---------- ---------------------------------------- ---------
7369 SMITH CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
4). 設置列標題的對齊方式
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
SQL> col ename justify center
SQL> /
EMPNO ENAME JOB
---------- ---------------------------------------- ---------
7369 SMITH CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
對於NUMBER型的列,列標題預設在右邊,其它類型的列標題預設在左邊
5). 不讓一個列顯示在屏幕上
NOPRI[NT]|PRI[NT]
SQL> col job noprint
SQL> /
EMPNO ENAME
---------- ----------------------------------------
7369 SMITH
7499 ALLEN
7521 WARD
6). 格式化NUMBER類型列的顯示:
SQL> COLUMN SAL FORMAT ,990
SQL> /
Employee
Department Name Salary Commission
---------- ---------- --------- ----------
30 ALLEN ,600 300
7). 顯示列值時,如果列值為NULL值,用text值代替NULL值
COMM NUL[L] text
SQL>COL COMM NUL[L] text
8). 設置一個列的回繞方式
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
COL1
--------------------
HOW ARE YOU?
SQL>COL COL1 FORMAT A5
SQL>COL COL1 WRAPPED
COL1
-----
HOW A
RE YO
U?
SQL> COL COL1 WORD_WRAPPED
COL1
-----
HOW
ARE
YOU?
SQL> COL COL1 WORD_WRAPPED
COL1
-----
HOW A
9). 顯示列的當前的顯示屬性值
SQL> COLUMN column_name
10). 將所有列的顯示屬性設為預設值
SQL> CLEAR COLUMNS
8. 屏蔽掉一個列中顯示的相同的值
BREAK ON break_column
SQL> BREAK ON DEPTNO
SQL> SELECT DEPTNO, ENAME, SAL
FROM EMP
WHERE SAL < 2500
ORDER BY DEPTNO;
DEPTNO ENAME SAL
---------- ----------- ---------
10 CLARK 2450
MILLER 1300
20 SMITH 800
ADAMS 1100
9. 在上面屏蔽掉一個列中顯示的相同的值的顯示中,每當列值變化時在值變化之前插入n個空行。
BREAK ON break_column SKIP n
SQL> BREAK ON DEPTNO SKIP 1
SQL> /
DEPTNO ENAME SAL
---------- ----------- ---------
10 CLARK 2450
MILLER 1300
20 SMITH 800
ADAMS 1100
10. 顯示對BREAK的設置
SQL> BREAK
11. 刪除6、7的設置
SQL> CLEAR BREAKS
12. Set 命令:
該命令包含許多子命令:
SET system_variable value
system_variable value 可以是如下的子句之一:
APPI[NFO]{ON|OFF|text}
ARRAY[SIZE] {15|n}
AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}
AUTOP[RINT] {ON|OFF}
AUTORECOVERY [ON|OFF]
AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
BLO[CKTERMINATOR] {.|c}
CMDS[EP] {;|c|ON|OFF}
COLSEP {_|text}
COM[PATIBILITY]{V7|V8|NATIVE}
CON[CAT] {.|c|ON|OFF}
COPYC[OMMIT] {0|n}
COPYTYPECHECK {ON|OFF}
DEF[INE] {&|c|ON|OFF}
DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}]
ECHO {ON|OFF}
EDITF[ILE] file_name[.ext]
EMB[EDDED] {ON|OFF}
ESC[APE] {|c|ON|OFF}
FEED[BACK] {6|n|ON|OFF}
FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}
FLU[SH] {ON|OFF}
HEA[DING] {ON|OFF}
HEADS[EP] {||c|ON|OFF}
INSTANCE [instance_path|LOCAL]
LIN[ESIZE] {80|n}
LOBOF[FSET] {n|1}
LOGSOURCE [pathname]
LONG {80|n}
LONGC[HUNKSIZE] {80|n}
MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL
{ON|OFF}] [PRE[FORMAT] {ON|OFF}]
NEWP[AGE] {1|n|NONE}
NULL text
NUMF[ORMAT] format
NUM[WIDTH] {10|n}
PAGES[IZE] {24|n}
PAU[SE] {ON|OFF|text}
RECSEP {WR[APPED]|EA[CH]|OFF}
RECSEPCHAR {_|c}
SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_
WRAPPED]|TRU[NCATED]}]
SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]}
SHOW[MODE] {ON|OFF}
SQLBL[ANKLINES] {ON|OFF}
SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]}
SQLCO[NTINUE] {> |text}
SQLN[UMBER] {ON|OFF}
SQLPRE[FIX] {#|c}
SQLP[ROMPT] {SQL>|text}
SQLT[ERMINATOR] {;|c|ON|OFF}
SUF[FIX] {SQL|text}
TAB {ON|OFF}
TERM[OUT] {ON|OFF}
TI[ME] {ON|OFF}
TIMI[NG] {ON|OFF}
TRIM[OUT] {ON|OFF}
TRIMS[POOL] {ON|OFF}
UND[ERLINE] {-|c|ON|OFF}
VER[IFY] {ON|OFF}
WRA[P] {ON|OFF}
1). 設置當前session是否對修改的數據進行自動提交
SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}
2).在用start命令執行一個sql腳本時,是否顯示腳本中正在執行的SQL語句
SQL> SET ECHO {ON|OFF}
3).是否顯示當前sql語句查詢或修改的行數
SQL> SET FEED[BACK] {6|n|ON|OFF}
默認只有結果大於6行時才顯示結果的行數。如果set feedback 1 ,則不管查詢到多少行都返回。當為off 時,一律不顯示查詢的行數
4).是否顯示列標題
SQL> SET HEA[DING] {ON|OFF}
當set heading off 時,在每頁的上面不顯示列標題,而是以空白行代替
5).設置一行可以容納的字元數
SQL> SET LIN[ESIZE] {80|n}
如果一行的輸出內容大於設置的一行可容納的字元數,則折行顯示。
6).設置頁與頁之間的分隔
SQL> SET NEWP[AGE] {1|n|NONE}
當set newpage 0 時,會在每頁的開頭有一個小的黑方框。
當set newpage n 時,會在頁和頁之間隔著n個空行。
當set newpage none 時,會在頁和頁之間沒有任何間隔。
7).顯示時,用text值代替NULL值
SQL> SET NULL text
8).設置一頁有多少行數
SQL> SET PAGES[IZE] {24|n}
如果設為0,則所有的輸出內容為一頁並且不顯示列標題
9).是否顯示用DBMS_OUTPUT.PUT_LINE包進行輸出的信息。
SQL> SET SERVEROUT[PUT] {ON|OFF}
在編寫存儲過程時,我們有時會用dbms_output.put_line將必要的信息輸出,以便對存儲過程進行調試,只有將serveroutput變數設為on後,信息才能顯示在屏幕上。
10).當SQL語句的長度大於LINESIZE時,是否在顯示時截取SQL語句。
SQL> SET WRA[P] {ON|OFF}
當輸出的行的長度大於設置的行的長度時(用set linesize n命令設置),當set wrap on時,輸出行的多於的字元會另起一行顯示,否則,會將輸出行的多於字元切除,不予顯示。
11).是否在屏幕上顯示輸出的內容,主要用與SPOOL結合使用。
SQL> SET TERM[OUT] {ON|OFF}
在用spool命令將一個大表中的內容輸出到一個文件中時,將內容輸出在屏幕上會耗費大量的時間,設置set termspool off後,則輸出的內容只會保存在輸出文件中,不會顯示在屏幕上,極大的提高了spool的速度。
12).將SPOOL輸出中每行後面多餘的空格去掉
SQL> SET TRIMS[OUT] {ON|OFF}
13)顯示每個sql語句花費的執行時間
set TIMING {ON|OFF}
14). 遇到空行時不認為語句已經結束,從後續行接著讀入。
SET SQLBLANKLINES ON
Sql*plus中, 不允許sql語句中間有空行, 這在從其它地方拷貝腳本到sql*plus中執行時很麻煩. 比如下面的腳本:
select deptno, empno, ename
from emp
where empno = '7788';
如果拷貝到sql*plus中執行, 就會出現錯誤。這個命令可以解決該問題
15).設置DBMS_OUTPUT的輸出
SET SERVEROUTPUT ON BUFFER 20000
用dbms_output.put_line('strin_content');可以在存儲過程中輸出信息,對存儲過程進行調試
如果想讓dbms_output.put_line(' abc');的輸出顯示為:
SQL> abc,而不是SQL>abc,則在SET SERVEROUTPUT ON後加format wrapped參數。
16). 輸出的數據為html格式
set markup html
在8.1.7版本(也許是816? 不太確定)以後, sql*plus中有一個set markup html的命令, 可以將sql*plus的輸出以html格式展現.
注意其中的spool on, 當在屏幕上輸出的時候, 我們看不出與不加spool on有什麼區別, 但是當我們使用spool filename 輸出到文件的時候, 會看到spool文件中出現了等tag.
14.修改sql buffer中的當前行中,第一個出現的字元串
C[HANGE] /old_value/new_value
SQL> l
1* select * from dept
SQL> c/dept/emp
1* select * from emp
15.編輯sql buffer中的sql語句
EDI[T]
16.顯示sql buffer中的sql語句,list n顯示sql buffer中的第n行,並使第n行成為當前行
L[IST] [n]
17.在sql buffer的當前行下面加一行或多行
I[NPUT]
18.將指定的文本加到sql buffer的當前行後面
A[PPEND]
SQL> select deptno,
2 dname
3 from dept;
DEPTNO DNAME
---------- --------------
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONS
SQL> L 2
2* dname
SQL> a ,loc
2* dname,loc
SQL> L
1 select deptno,
2 dname,loc
3* from dept
SQL> /
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
19.將sql buffer中的sql語句保存到一個文件中
SAVE file_name
20.將一個文件中的sql語句導入到sql buffer中
GET file_name
21.再次執行剛才已經執行的sql語句
RUN
or
/
22.執行一個存儲過程
EXECUTE procere_name
23.在sql*plus中連接到指定的資料庫
CONNECT user_name/passwd@db_alias
24.設置每個報表的頂部標題
TTITLE
25.設置每個報表的尾部標題
BTITLE
26.寫一個注釋
REMARK [text]
27.將指定的信息或一個空行輸出到屏幕上
PROMPT [text]
28.將執行的過程暫停,等待用戶響應後繼續執行
PAUSE [text]
Sql>PAUSE Adjust paper and press RETURN to continue.
29.將一個資料庫中的一些數據拷貝到另外一個資料庫(如將一個表的數據拷貝到另一個資料庫)
COPY {FROM database | TO database | FROM database TO database}
{APPEND|CREATE|INSERT|REPLACE} destination_table
[(column, column, column, ...)] USING query
sql>COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST
create emp_temp
USING SELECT * FROM EMP
30.不退出sql*plus,在sql*plus中執行一個操作系統命令:
HOST
Sql> host hostname
該命令在windows下可能被支持。
31.在sql*plus中,切換到操作系統命令提示符下,運行操作系統命令後,可以再次切換回sql*plus:
!
sql>!
$hostname
$exit
sql>
該命令在windows下不被支持。
32.顯示sql*plus命令的幫助
HELP
如何安裝幫助文件:
Sql>@ ?sqlplusadminhelphlpbld.sql ?sqlplusadminhelphelpus.sql
Sql>help index
33.顯示sql*plus系統變數的值或sql*plus環境變數的值
Syntax
SHO[W] option
where option represents one of the following terms or clauses:
system_variable
ALL
BTI[TLE]
ERR[ORS] [{FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY|
TRIGGER|VIEW|TYPE|TYPE BODY} [schema.]name]
LNO
PARAMETERS [parameter_name]
PNO
REL[EASE]
REPF[OOTER]
REPH[EADER]
SGA
SPOO[L]
SQLCODE
TTI[TLE]
USER
1) . 顯示當前環境變數的值:
Show all
2) . 顯示當前在創建函數、存儲過程、觸發器、包等對象的錯誤信息
Show error
當創建一個函數、存儲過程等出錯時,變可以用該命令查看在那個地方出錯及相應的出錯信息,進行修改後再次進行編譯
3) . 顯示初始化參數的值:
show PARAMETERS [parameter_name]
4) . 顯示資料庫的版本:
show REL[EASE]
5) . 顯示SGA的大小
show SGA
6). 顯示當前的用戶名
show user
34.查詢一個用戶下的對象
SQL>select * from tab;
SQL>select * from user_objects;
35.查詢一個用戶下的所有的表
SQL>select * from user_tables;
36.查詢一個用戶下的所有的索引
SQL>select * from user_indexes;
37. 定義一個用戶變數
方法有兩個:
a. define
b. COL[UMN] [{column|expr} NEW_V[ALUE] variable [NOPRI[NT]|PRI[NT]]
OLD_V[ALUE] variable [NOPRI[NT]|PRI[NT]]
下面對每種方式給予解釋:
a. Syntax
DEF[INE] [variable]|[variable = text]
定義一個用戶變數並且可以分配給它一個CHAR值。
assign the value MANAGER to the variable POS, type:
SQL> DEFINE POS = MANAGER
assign the CHAR value 20 to the variable DEPTNO, type:
SQL> DEFINE DEPTNO = 20
list the definition of DEPTNO, enter
SQL> DEFINE DEPTNO
―――――――――――――――
DEFINE DEPTNO = 」20」 (CHAR)
定義了用戶變數POS後,就可以在sql*plus中用&POS或&&POS來引用該變數的值,sql*plus不會再提示你給變數輸入值。
b. COL[UMN] [{column|expr} NEW_V[ALUE] variable [NOPRI[NT]|PRI[NT]]
NEW_V[ALUE] variable
指定一個變數容納查詢出的列值。
例:column col_name new_value var_name noprint
select col_name from table_name where ……..
將下面查詢出的col_name列的值賦給var_name變數.
一個綜合的例子:
得到一個列值的兩次查詢之差(此例為10秒之內共提交了多少事務):
column redo_writes new_value commit_count
select sum(stat.value) redo_writes
from v$sesstat stat, v$statname sn
where stat.statistic# = sn.statistic#
and sn.name = 'user commits';
-- 等待一會兒(此處為10秒);
execute dbms_lock.sleep(10);
set veri off
select sum(stat.value) - &commit_count commits_added
from v$sesstat stat, v$statname sn
where stat.statistic# = sn.statistic#
and sn.name = 'user commits';
38. 定義一個綁定變數
VAR[IABLE] [variable [NUMBER|CHAR|CHAR (n)|NCHAR|NCHAR (n) |VARCHAR2 (n)|NVARCHAR2 (n)|CLOB|NCLOB|REFCURSOR]]
定義一個綁定變數,該變數可以在pl/sql中引用。
可以用print命令顯示該綁定變數的信息。
如:
column inst_num heading Inst Num new_value inst_num format 99999;
column inst_name heading Instance new_value inst_name format a12;
column db_name heading DB Name new_value db_name format a12;
column dbid heading DB Id new_value dbid format 9999999999 just c;
prompt
prompt Current Instance
prompt ~~~~~~~~~~~~~~~~
select d.dbid dbid
, d.name db_name
, i.instance_number inst_num
, i.instance_name inst_name
from v$database d,
v$instance i;
variable dbid number;
variable inst_num number;
begin
:dbid := &dbid;
:inst_num := &inst_num;
end;
/
說明:
在sql*plus中,該綁定變數可以作為一個存儲過程的參數,也可以在匿名PL/SQL塊中直接引用。為了顯示用VARIABLE命令創建的綁定變數的值,可以用print命令
注意:
綁定變數不同於變數:
1. 定義方法不同
2. 引用方法不同
綁定變數::variable_name
變數:&variable_name or &&variable_name
3.在sql*plus中,可以定義同名的綁定變數與用戶變數,但是引用的方法不同。
39. &與&&的區別
&用來創建一個臨時變數,每當遇到這個臨時變數時,都會提示你輸入一個值。
&&用來創建一個持久變數,就像用用define命令或帶new_vlaue字句的column命令創建的持久變數一樣。當用&&命令引用這個變數時,不會每次遇到該變數就提示用戶鍵入值,而只是在第一次遇到時提示一次。
如,將下面三行語句存為一個腳本文件,運行該腳本文件,會提示三次,讓輸入deptnoval的值:
select count(*) from emp where deptno = &deptnoval;
select count(*) from emp where deptno = &deptnoval;
select count(*) from emp where deptno = &deptnoval;
將下面三行語句存為一個腳本文件,運行該腳本文件,則只會提示一次,讓輸入deptnoval的值:
select count(*) from emp where deptno = &&deptnoval;
select count(*) from emp where deptno = &&deptnoval;
select count(*) from emp where deptno = &&deptnoval;
40.在輸入sql語句的過程中臨時先運行一個sql*plus命令
#
有沒有過這樣的經歷? 在sql*plus中敲了很長的命令後, 突然發現想不起某個列的名字了, 如果取消當前的命令,待查詢後再重敲, 那太痛苦了. 當然你可以另開一個sql*plus窗口進行查詢, 但這里提供的方法更簡單.
比如說, 你想查工資大於4000的員工的信息, 輸入了下面的語句:
SQL> select deptno, empno, ename
2 from emp
3 where
這時, 你發現你想不起來工資的列名是什麼了.
這種情況下, 只要在下一行以#開頭, 就可以執行一條sql*plus命令, 執行完後, 剛才的語句可以繼續輸入
SQL>> select deptno, empno, ename
2 from emp
3 where
6 #desc emp
Name Null? Type
----------------------------------------- -------- --------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
6 sal > 4000;
DEPTNO EMPNO ENAME
---------- ---------- ----------
10 7839 KING
41. SQLPlus中的快速復制和粘貼技巧
1) 滑鼠移至想要復制內容的開始
2) 用右手食指按下滑鼠左鍵
3) 向想要復制內容的另一角拖動滑鼠,與Word中選取內容的方法一樣
4) 內容選取完畢後(所選內容全部反顯),滑鼠左鍵按住不動,用右手中指按滑鼠右鍵
5) 這時,所選內容會自動復制到SQL*Plus環境的最後一行
42、得到當前資料庫中當前用戶可見的所有表名
select table_name from user_tables;

7. oracle sqlplus 命令都有那些 show命令除了 parameter外,還有什麼可以show。

一般在SQL>下進行SQLPLUS操作,都需要進行必要的環境設置才能完成我們所需要的輸出。所有環境的設置由SET命令加相應的環境變數來完成。下面是常用的環境設置:

§2.5.1 ARRAYSIZE(取回的行數)
SET ARRAY[SIZE]{integer}

一次可以提取(Fetch)的行的數目,1->5000,當有較長欄位時應設小些。

§2.5.2 AUTOCOMMIT(自動提交)
SET AUTO [COMMIT] { [ OFF | ON | IMM | n] }
用於在操作中是自動提交或是部分提交或是不自動提交。
1) 或IMM使得在完成每條SQL語句時將未提交的改變立刻提交給資料庫系統。ON
2) 允許在用戶發出COMMIT後,可以執行命令的數量(將n條SQL語句所做的改變進行提交)。N
3) 停止自動提交,用戶必須用COMMIT命令才能被提交。OFF

§2.5.3 LINESIZE(行顯示寬度)
可以設置LINESIZE環境變數來控制行的顯示寬度,預設是80個字元。
SET Lin[esize]{80|integer}
Integer =設置行寬度(字元個數),最大值999,如:
SQL>set linesize 160

§2.5.4 LONG(長類型顯示位元組數)
在預設的SQL> 狀態下,SQL>緩沖區用於顯示LONG 的位元組數只有80個字元。如果我們需要查詢的列中含有 LONG類型的欄位的話,就需要將LONG緩沖區設置大些。
SET LONG{80|integer}
Integer是 顯示或拷貝long值的最大寬度, n=1->32767(但必須小於Maxdata值)
SQL>show Maxdata (最大行寬)
SQL>set long 2000

§2.5.5 PAGESIZE(頁行數)
在預設的SQL> 狀態下,SQL>緩沖區顯示頁的行數是24行,其中22行顯示數據,2行顯示標題和橫線。我們將pagesize 設置大些以減少提示標題和橫線。
SET pag[esize] {24|integer}
SQL>SET pagesize 66

§2.5.6 PAUSE(暫停)
可以設置 PAUSE 為ON 或OFF來控制屏幕顯示。當設置為ON 時,在select 語句發出後需要按Enter鍵才能顯示一屏。
SET PAUSE [ ON | OFF ]
SQL> setpause on

提示:在發出select 語句並按Enter鍵後還要再按Enter鍵才能顯示結果.

§2.5.7 SPACE(列間空格)
可用 set space 來設置各列間的空格數,語法為:
SET SPA[CE] {1|n}
N為設置輸出行列間的空格數,最大為10。
SQL>set space 2

建議:在一般情況下,不用設置space參數。

§2.5.8 Termout (啟/停屏幕顯示)
TERMOUT用於設置在屏幕上顯示或不顯示所輸出的信息。
SET TERMOUT { ON | OFF }

set termout off
set termout on

set termout off 常用SPOOL XXX時,即關閉報表在屏幕上的顯示(節省時間)
set termout on 常用SPOOL off之後,即恢復報表在屏幕上的顯示

§2.5.9 ECHO (啟/停命令顯示)
可以用ECHO命令來顯示或不顯示所執行的SQL命令。語法如:
SET ECHO{OFF|ON}
顯示執行當中的各命令( 即用start 時)
set echo 受到 set termout 的影響

set pagesize 100
set echo on
select table_name from dict where rownum<20;
select * from cat where rownum<30;
set echo off
--下面只顯示結果不顯示命令:
select table_name from dict where rownum<20;
select * from cat where rownum<30;

§2.5.10 TRANSACTION (啟動事務)
一個很重要的事務環境設置是TRANSACTION。它包括兩個部分的內容:
SET TRANSACTION { READ ONLY | USE ROLLBACK SEGMENT segment_name }
READ ONLY是用於保證讀的一致性。即其他用戶的修改不影響當前查詢結果。
USE ROLLBACK SEGMENT segment_name是為當前所處理的事務指定專門的回滾段。這主要是在進行大量的Insert或Delete或Update時,需要一個大的回滾段以保證事務正常完成。詳細見資料庫管理員。

§2.5.11 SHOW ALL(列出所有參數)
可以用SHOW ALL來顯示當前的所有參數情況。它的用法很簡單。比如:

SQL> show all
appinfo為ON並且已設置為"SQL*Plus"
arraysize 15
autocommit OFF
autoprint OFF
autorecovery OFF
autotrace OFF
blockterminator "." (hex 2e)
btitle OFF and為下一條SELECT語句的前幾個字元
cmdsep OFF
colsep " "
compatibility version NATIVE
concat "." (hex 2e)
commit 0
COPYTYPECHECK為ON
define "&" (hex 26)
describe DEPTH 1 LINENUM OFF INDENT ON
markup HTML OFF SPOOL OFF ENTMAP ON PREFORMAT OFF
echo OFF
editfile "afiedt.buf"
embedded OFF
escape OFF
flagger OFF
flush ON
heading ON
headsep "|" (hex 7c)
instance "local"
linesize 80
lno 14
loboffset 1
logsource ""
long 80
longchunksize 80
newpage 1
null ""
numformat ""
numwidth 10
pagesize 14
PAUSE為OFF
pno 0
recsep WRAP
recsepchar " " (hex 20)
release 801070000
repfooter OFF and為NULL
repheader OFF and為NULL
serveroutput OFF
shiftinout INVISIBLE
showmode OFF
spool OFF
sqlblanklines OFF
sqlcase MIXED
sqlcode 0
sqlcontinue "> "
sqlnumber ON
sqlprefix "#" (hex 23)
sqlprompt "SQL> "
sqlterminator ";" (hex 3b)
suffix "sql"
tab ON
termout ON
time OFF
timing OFF
trimout ON
trimspool OFF
ttitle OFF and為下一條SELECT語句的前幾個字元
underline "-" (hex 2d)
USER為"SYS"
verify ON
wrap :行將為已換行
SQL>
你可以從上面的參數中看到其當前值,也可以修改某些參數的值。
格式化輸出
§2.6.1 一般數據的格式化輸出

在Oracle的SQL>下,經常用COLUMN命令來對所輸出的列進行格式化,即按照一定的格式進行顯示。COLMUN命令語法如下:

COL[UMN] [{ column | expr } [ option_1 ... option_n ] ]

column:列名
expr:有效的SQL表達式
option_1...option_n:可以是下列之一:
ALI[AS] alias
CLE[AR]
FOLD_A[FTER]
FOLD_B[EFORE]
FOR[MAT] format
HEA[DING] text
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
LIKE {expr|alias}
NEWL[INE]
NEW_V[ALUE] variable
NOPRI[NT]|PRI[NT]
NUL[L] text
OLD_V[ALUE] variable
ON|OFF
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]

下面給出常用的關鍵字的解釋:
Alias 給出列的別名,BREAK和COUMN可以引用所定義的別名。
CLEAR 取消列的定義。
FORMAT列顯示格式,format為:
9999990 9或0的個數決定最多顯示多少位
9,999,999.99按照逗號和小數點來顯示數據,若是0以空格顯示
099999 顯示前面補0
$999,999.99 數字前加美圓號
B99999 若為0,則結果為空白
99999Mi 若數字為負,則負號放在數字後(右邊),預設放在左邊
99999PR 負號將以括弧括起
9.999EEEE 以科學記數法表示(必須有4個E)
999V99 數字乘以10n ,如1234變為123400
DATE 採用日期數字格式(MM/DD/YY)

Heading重新標記列的顯示標題,如:

SQL> col ename heading 姓名format a10
SQL> select ename,sal from emp;

例子:
SQL
COLUMN SALARY FOR $9,999,999.99
COLUMN LAST_NAME FOR A35.

§2.6.2 日期的格式化輸出
Oracle系統提供了一個NLS_DATE_FORMAT的環境變數來設置日期的顯示格式。用它可以完成按照不同格式要求的顯示,比如按照中國的習慣為yyyy年mm月dd日等。

1.系統日期 sysdate 的顯示
用sysdate 可以顯示ORACLE RDBMS 所在機器的日期及時間,如:
SQL> alter session set nls_date_format ='"公元"yyyy"年"mm"月"dd"日"';

會話已更改。

SQL> select sysdate from al;

SYSDATE
------------------
公元2001年05月30日

2.日期類型的顯示

select sysdate,to_char(sysdate,』yyyy.mm.dd hh24:mi;ss』) from al;

SQL> connect scott/tiger
已連接。
SQL> alter session set nls_date_format ='yyyy"年"mm"月"dd"日生"';

會話已更改。
SQL> col HIREDATE heading生日
SQL> col sal heading工資
SQL> col sal ename姓名
SQL> select ename,sal,hiredate from emp;

姓名 工資 生日
---------- ---------- -----------------
SMITH 800 1980年12月17日生
ALLEN 1600 1981年02月20日生
WARD 1250 1981年02月22日生
JONES 2975 1981年04月02日生
MARTIN 1250 1981年09月28日生
BLAKE 2850 1981年05月01日生
CLARK 2450 1981年06月09日生
SCOTT 3000 1987年04月19日生
KING 5000 1981年11月17日生
TURNER 1500 1981年09月08日生
ADAMS 1100 1987年05月23日生
JAMES 950 1981年12月03日生
FORD 3000 1981年12月03日生
MILLER 1300 1982年01月23日生

已選擇14行。
§2.7 加標題
有時在輸出一些結果時,可能需要加一些標題,如表上面的頂標題,落款等。這樣的要求可由Ttitle和Btitle來完成。
ttitle和btitle

ttitle [center|left|right]string 頂標題
btitle [center|left|right]string 底標題
ttitle center 'XX公司人員情況表'
btitle left '製表人:xxxx' right '日期:xxxx年xx月'
Clear ttitle

§2.8 建立簡單報告
我們可以用TTITLE、BTITLE、COLUMN、BREAK ON、COMPUTE SUM及SET LINESIZE、SET PAGESIZE、SET NEWPAGE來設置查詢結果的顯示格式;在用SPOOL命令將顯示結果輸出到一個操作系統文件中去,一般輸出文件的類型為.LST。

建立簡單報告主要使用下面命令來實現:

1. SPOOL命令

SPOOL filename 將緩沖區的內容寫到文件中
SPOOL off 終止寫命令

2. COLUMN 命令
column col_name[,heading] format format_spe
把欄位的結果指定為一種輸出格式
COL name heading '姓名' for a10
COL sal heading '工資' for 9,999.99

3.ttitle、btitle

ttitle [center|left|right]string 頂標題
btitle [center|left|right]string 底標題
ttitle center 'XX公司人員情況表'
btitle left '製表人:趙元傑' right '日期:1998.11月'
Clear ttitle

4.break、compute

clear breaks,clear computes
break on column 在該列上中斷
break on row 在每一行上中斷
break on Page
break on report
skip n 跳過n行
skip page 跳過未用完的頁
compute avg
compute count
compute max
compute min
compute std
compute sum
compute var
compute num 計算所有行
compute sum of sal on deptno

5.set 在報表中的設置
l set termout off、set termout on命令
l set termout off 常用SPOOL XXX前,即關閉報表在屏幕上的顯示(節省時間)
l set termout on 常用SPOOL off之後,即恢復報表在屏幕上的顯示
l set ECHO{OFF|ON} 顯示執行當中的各命令(即用start 時),set echo 受到 set termout 的影響
l set Lin[esize]{80|integer} 設置行寬度,最大值999
l set pag[esize] {24|integer} 設置頁的大小

例子:
SQL>COL ename heading 『姓名』 for a12
SQL>COL sal heading 『工資』 for a999,999.99
SQL>COL hiredate heading 『出生』
SQL>SET LINESIZE 200
SQL>SET PAGESIZE 60
SQL>SPOOL c:\all_emp
SQL>select ename,sal,deptno,hiredate from emp order by deptno;
SQL>SPOOL OFF

§2.9 輸入變數
Oracle提供一種在處理SQL語句時可以將參數作為變數來對待的技術,即在條件句中可以是變數而不是具體的值,這樣的處理就是輸入變數。這樣做的目的就是可以重復使用同樣的語句,每次只要輸入相應的值即可。要實現將參數寫成為變數,只要在變數前加一個&號即可。看下面語句:

Select sid, serial#,username, command from v$session
Where USERNAME = upper(『&usr』);

這樣的語句在運行中,系統會自動提示你回答變數的具體值,上面語句運行時提示和回答時顯示的信息如下:

SQL> Select sid, serial#,username, command from v$session
2 Where USERNAME = upper('&usr');
輸入 usr 的值: sys
原值 2: Where USERNAME = upper('&usr')
新值 2: Where USERNAME = upper('sys')

SID SERIAL# USERNAME COMMAND
---------- ---------- ------------------------------ ----------
7 26 SYS 3

在變數說明中,可以使用多個變數,比如:

Alter system kill session 『&sid,&ser』;

Alter system kill session 『&會話號,&序列號』;

它的運行情況如下:

SQL> Select sid, serial#,username, command from v$session;

SID SERIAL# USERNAME COMMAND
---------- ---------- ------------------------------ ----------
1 1 0
2 1 0
3 1 0
4 1 0
5 1 0
6 1 0
7 26 SYS 3
8 16 ZHAO 0

已選擇8行。

SQL> Alter system kill session '&sid,&ser';
輸入sid的值: 8
輸入ser的值: 16
原值 1: Alter system kill session '&sid,&ser'
新值 1: Alter system kill session '8,16'

系統已更改。

一般系統預設下是使用 「&」 符號來定義變數,你也可以使用另外的符號來代替,比如不喜歡用 & 而要用 ?,則有:

SQL> set define ?
SQL> select sid,serial#,username from v$session where username='?usr';
輸入 usr 的值: SYS
原值 1: select sid,serial#,username from v$session where username='?usr'
新值 1: select sid,serial#,username from v$session where username='SYS'

SID SERIAL# USERNAME
---------- ---------- ------------------------------
7 26 SYS

次時由於我們修改了會話環境的參數值,可以用下面命令查看:

SQL> show define
define "?" (hex 3f)

8. ORACLE如何使用startup mount命令參數

在win的服務里把所有標記為自動Oracle的服務全都啟動起來.如果是Oracle10G,應該有4個服務.
然後,運行cmd.exe,如果Oracle就按照在本機,輸入如下命令:sqlplus
/nolog.完成後會進入到SQL>的提示符.
這時候如果win的Oracle服務啟動起來了,則資料庫正常情況下是mount並且是open的,要想使用startup
mount命令,則需要先關閉Oracle資料庫.輸入:
SQL>shutdown
immediate;
就可以關閉資料庫.然後,就可以使用startup
mount啟動資料庫到mount狀態了.
如果後面還要打開的話,輸入
SQL>alter
database
open;
則會打開資料庫.

9. 平時在sqlplus下啟動資料庫時用到的參數文件是哪種pfile還是spfile

9i以上的版本默認的啟動的是spfile,其默認存儲位置$ORACLE_HOME/dbs(unix)或者$ORACLE_HOME\database,默認名稱為spfilesid.ora,其中sid為資料庫的sid。
但你也可以通過制定pfile的文件啟動資料庫
startup
pfile
='$ORACLE_HOME/dbs/pfilesid.ora;
這種情況多用在需要修改隱式參數時;
查看當前資料庫使用的是spfile還是pfile的方式如下:
以sysdba身份登錄資料庫,
執行命令
show
parameter
spfile,如果有值,則使用的是spfile,否則使用的是pfile;
SQL>
conn
/
as
sysdba
Connected
.
SQL>
show
parameter
spfile;
NAME
TYPE
VALUE
------------------------------------
-----------
------------------------------
spfile
string
?/dbs/[email protected]
SQL>

閱讀全文

與sqlplusstart命令參數相關的資料

熱點內容
安卓如何使用華為手機助手 瀏覽:701
怎麼查看域伺服器名稱 瀏覽:775
如何把蘋果的視頻傳到安卓手機 瀏覽:612
介面伺服器怎麼使用 瀏覽:62
蘋果怎麼實現安卓全面屏手勢 瀏覽:977
拳皇97最強宏命令 瀏覽:921
linux安裝svn查看 瀏覽:850
內置函數計算絕對值python 瀏覽:88
千聊免費課程可以重新加密嗎 瀏覽:507
python能代替php嗎 瀏覽:252
phpexcel樣式 瀏覽:265
安卓手機有沒有什麼軟體可以阻止彈廣告的 瀏覽:306
linux區域網搭建伺服器 瀏覽:690
python編譯器mac 瀏覽:293
windows的doc命令 瀏覽:463
nfc全加密門禁卡 瀏覽:636
身份信息被加密 瀏覽:482
我的鹽城app怎麼添加不了家庭成員 瀏覽:493
php商城並發 瀏覽:348
熊貓繪畫app怎麼做出大佬的筆刷 瀏覽:603