第十三章 sqlplus命令(一)

to_be_Dba發表於2013-01-30

第十三章  sqlplus命令

1. @或start
執行某個檔案中的語句,有些系統可以包含檔案路徑
執行指令碼檔案時,用COLUMN等命令設定的格式依然有效

此命令還可以執行包含ftp、http格式的命令:
@HTTP://machine_name.domain:port/YEAREND.SQL VAL1 VAL2
@FTP://machine_name.domain:port/YEAREND.SQL VAL1 VAL2

在配置了網路伺服器的報告中,可以執行動態指令碼:
@HTTP://machine_name.domain:port/SCRIPTSERVER?ENDOFYEAR VAL1 VAL2


2. @@
和@差不多
如果在指令碼中執行@@file_name.ext,sqlplus將在該指令碼相同的目錄下執行file_name.ext指令碼


3.  /
執行儲存在buffer中的最近一次執行的sql或pl/sql塊

4. ACCEPT或ACC
語法為:ACCEPT  變數名  資料型別 FORMAT 格式  DEFAULT 預設值 PROMPT xxx|NOPROMPT  HIDE

資料型別包括:[NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE]
日期格式應該是NLS_DATE_FORMAT指定的格式,否則報錯

如:
密碼輸入:ACCEPT pswd CHAR PROMPT 'Password: ' HIDE  指定了隱藏屬性

數字格式輸入:
ACCEPT salary NUMBER FORMAT '999.99' DEFAULT '000.0' -
PROMPT 'Enter weekly salary: '

日期格式輸入:
ACCEPT hired DATE FORMAT 'dd/mm/yyyy' DEFAULT '01/01/2003'-
PROMPT 'Enter date hired: '


5.APPEND或A
在iSQLPlus不能用
語法:APPEND  text
將內容增加到緩衝區當前行(最後一行)的末尾
如果要增加一個分號 需要輸入兩個分號

6.ARCHIVE LOG
需要sysdba或sysoper許可權
語法:ARCHIVE LOG {LIST | STOP} | {START | NEXT | ALL | integer } [TO destination]
顯示歸檔模式,開啟、關閉重做日誌的歸檔

list是顯示
STOP是停止
START是開始
NEXT是手工手工歸檔下一個已經填滿但未歸檔的重做日誌檔案組
ALL是手工歸檔所有填滿但未歸檔的日誌檔案或日誌組
integer  使日誌序號為n的重做日誌檔案組歸檔,可以指定仍然線上的重做日誌檔案組。如果根據檔案號未找到對應文

件會報錯。
destination 指定歸檔路徑,預設是LOG_ARCHIVE_DEST指定的路徑


ARCHIVE LOG 1001 '/vobs/oracle/dbs/arch'  將日誌組號為1001的組歸檔到指定路徑


7.ATTRIBUTE
ATTRIBUTE [type_name.attribute_name [option ...]]
where option represents one of the following clauses:
ALI[AS] alias
CLE[AR]
FOR[MAT] format
LIKE {type_name.attribute_name | alias}
ON | OFF

設定了某個物件的屬性格式後,在會話中一直有效,知道使用clear column或attribute off命令結束。

如:ATTRIBUTE EMPLOYEE_TYPE.LAST_NAME FORMAT A20
設定empolyee_type的last_name屬性格式為20個字元寬度


8.BREAK
語法:BRE[AK] [ON report_element [action [action]]] ...
report_element:{column|expr|ROW|REPORT}
action:[SKI[P] n|[SKI[P]] PAGE][NODUP[LICATES]|DUP[LICATES]]

功能:
壓縮重複行的顯示
每次有列值變化時跳過一空行
在給定列上的值每次變化時或報告結束時輸出統計數量

NODUP[LICATES]表示重複行出現時僅第一行顯示,後面顯示空格
還可以接compute命令,進行統計資訊的顯示。

如:
SQL> select * from emp order by deptno;

EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7839 KING       PRESIDENT       1981-11-17    5000.00               10
 7782 CLARK      MANAGER    7839 1981-6-9      2450.00               10
 7934 MILLER     CLERK      7782 1982-1-23     5000.00               10
 7902 FORD       ANALYST    7566 1981-12-3     3000.00               20
 7369 SMITH      CLERK      7902 1980-12-17     800.00               20
 7566 JONES      MANAGER    7839 1981-4-2      2975.00               20
 7900 JAMES      CLERK      7698 1981-12-3      950.00               30
 7844 TURNER     SALESMAN   7698 1981-9-8      1500.00      0.00     30
 7654 MARTIN     SALESMAN   7698 1981-9-28     1250.00   1400.00     30
 7521 WARD       SALESMAN   7698 1981-2-22     1250.00    500.00     30
 7499 ALLEN      SALESMAN   7698 1981-2-20     1600.00    300.00     30
 7698 BLAKE      MANAGER    7839 1981-5-1      2850.00               30
SQL> break on deptno skip 1
SQL> select * from emp order by deptno;

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7839 KING       PRESIDENT            17-NOV-81       5000                    10
      7782 CLARK      MANAGER         7839 09-JUN-81       2450
      7934 MILLER     CLERK           7782 23-JAN-82       5000

      7902 FORD       ANALYST         7566 03-DEC-81       3000                    20
      7369 SMITH      CLERK           7902 17-DEC-80        800
      7566 JONES      MANAGER         7839 02-APR-81       2975

      7900 JAMES      CLERK           7698 03-DEC-81        950                    30
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0
      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400
      有省略……

以下例子,按deptno分頁,job不同隔一行、薪水不同也隔一行
SQL> break on deptno skip page on job skip 1 on sal skip 1
SQL> select * from emp order by deptno,job,sal;

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7934 MILLER     CLERK           7782 23-JAN-82       5000                    10


      7782 CLARK      MANAGER         7839 09-JUN-81       2450


      7839 KING       PRESIDENT            17-NOV-81       5000

 

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7902 FORD       ANALYST         7566 03-DEC-81       3000                    20


      7369 SMITH      CLERK           7902 17-DEC-80        800


      7566 JONES      MANAGER         7839 02-APR-81       2975

 

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7900 JAMES      CLERK           7698 03-DEC-81        950                    30


      7698 BLAKE      MANAGER         7839 01-MAY-81       2850


      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500
      7654 MARTIN                     7698 28-SEP-81                  1400

      7844 TURNER                     7698 08-SEP-81       1500          0


     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30

 

12 rows selected.


9.BTITLE
語法:BTI[TLE] [printspec [text | variable] ...] | [ON | OFF]
格式包括:
BOLD
CE[NTER]
COL n
FORMAT text
LE[FT]
R[IGHT]
S[KIP] [n]
TAB n

設定頁首資訊


10.CHANGE
語法:C[HANGE] sepchar old [sepchar [new [sepchar]]]
iSQLPlus中不能用
更改緩衝區中的內容old,改為new

11.CLEAR或CL
後面的選項包括:
BRE[AKS]
BUFF[ER]
COL[UMNS]
COMP[UTES]
SCR[EEN]
SQL
TIMI[NG]

清空當前設定

12.COLUMN
選項包括:ALI[AS] alias
CLE[AR]
ENTMAP {ON | OFF}
FOLD_A[FTER]  html相關
FOLD_B[EFORE]
FOR[MAT] format 列內容格式
HEA[DING] text  該列標題
JUS[TIFY] {L[EFT] | C[ENTER] | R[IGHT]}
LIKE {expr | alias}  參照某列的格式
NEWL[INE]  顯示內容前空一行
NEW_V[ALUE] variable
NOPRI[NT] | PRI[NT]  不輸出某一行
NUL[L] text  空值如何顯示
OLD_V[ALUE] variable
ON | OFF  OFF將取消所有格式限制
WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]  對於長度超過限制的內容如何處理,wrap是分行,word_wrap表示在保

證單詞不跨行的前提下分行顯示,tru表示截斷

數字格式的詳細說明見文件313頁

如:
COLUMN REMARKS FORMAT A20 WRAP
結果為:
REMARKS
--------------------
This order must be s
hipped by air freigh
t to ORD

COLUMN REMARKS FORMAT A20 WORD_WRAP
結果為:
REMARKS
--------------------
This order must be
shipped by air freight
t to ORD


COLUMN REMARKS FORMAT A20 TRUNCATE
結果為:
REMARKS
--------------------
This order must be s


13.COMPUTE

語法:
COMP[UTE] [function [LAB[EL] text] ...
OF {expr | column | alias} ...
ON {expr | column | alias | REPORT | ROW} ...]

如:計算每份工作的salary的總和
COMPUTE SUM LABEL 'TOTAL' OF SALARY ON JOB_ID;

SELECT JOB_ID, LAST_NAME, SALARY
FROM EMP_DETAILS_VIEW
WHERE JOB_ID IN ('AC_MGR', 'SA_MAN')
ORDER BY JOB_ID, SALARY;


14.CONNECT
語法:CONN[ECT] { logon | / } [AS {SYSOPER | SYSDBA}]


15.COPY
8i以後不用


16.DEFINE
DEF[INE] [variable] | [variable = text]
所定義變數的值在以下操作前不會改變:
輸入一個新的值
undefine撤銷定義
accept接受該值
使用NEW_VALUE或OLD_VALUE進行呼叫,並用select呼叫
退出sqlplus

sqlplus中預設定義值可以通過如下例子理解:

SQL> define _connect_identifier
DEFINE _CONNECT_IDENTIFIER = "testdb" (CHAR)
SQL> define _DATE
DEFINE _DATE           = "26-DEC-12" (CHAR)
SQL> define _editor
DEFINE _EDITOR         = "ed" (CHAR)
SQL> define _o_release
DEFINE _O_RELEASE      = "1102000100" (CHAR)
SQL> define _PRIVILEGE  如果是sys等,得到的可能是AS SYSDBA 或AS SYSOPER
DEFINE _PRIVILEGE      = "" (CHAR)
SQL> define _sqlplus_release
DEFINE _SQLPLUS_RELEASE = "1102000100" (CHAR)
SQL> define _USER
DEFINE _USER           = "SCOTT" (CHAR)

 

17.DEL
DEL [n | n m | n * | n LAST | * | * n | * LAST | LAST]
iSQLPlus中不可用


18.DESCRIBE
DESC[RIBE] {[schema.]object[@connect_identifier]}
得到表、檢視、同義詞的列,包宣告中的過程和函式資訊,型別的資訊

19.DISCONNECT
斷開連線,不退出sqlplus環境


20.EDIT
iSQLPlus中不能用
ED[IT] [file_name[.ext]]
預設在ORACLE_PATH中查詢檔案,找不到則到當前目錄查詢,再找不到則報錯

如果未指定檔名,表示編輯當前緩衝區內容,該內容預設存放在AGIEDT.BUF檔案中

21.EXECUTE
EXEC[UTE] statement
執行pl/sql語句


22.EXIT
{EXIT | QUIT} [SUCCESS | FAILURE | WARNING | n | variable | :BindVariable] [COMMIT |ROLLBACK]


23.GET
GET [FILE] file_name[.ext] [LIS[T] | NOL[IST]]
將作業系統檔案放入sql buffer

24.HELP
幫助


25.HOST
HO[ST] [command]
到作業系統環境執行命令

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

相關文章