sql plus命令使用總結

tthero00boo發表於2013-11-06

/* 查詢當前sqlplus的server process的ospid */

SQL> select pid,spid,p.pname,p.program from v$process p,v$session s where p.addr=s.paddr and s.sid=userenv('sid');

       PID SPID    PNAME      PROGRAM
---------- ------- ---------- -----------------------------------
        30 2697               oracle@localhost.myrh6 (TNS V1-V3)


/* 不顯露sys密碼的登陸方式
C: > sqlplus
Enter user-name:sys
Enter password:password@myorcl11 as sysdba     --以sys使用者登陸的話 必須要加上 as sysdba 子句 */

define _editor=vim

--臨時退出
host,!,$
--執行os command
ho cp [!cp]


/*sql plus命令,執行後,不儲存在sql buffer的記憶體區域中,用來對輸出的結果進行格式化顯示*/

--1. 執行指令碼
SQL>start file_name
SQL>@ file_name
--2. 對當前的輸入進行編輯
SQL>edit
--3. 重新執行上一次執行的sql語句
SQL>/
--4. 將顯示的內容輸出到指定檔案,在螢幕上的所有內容都包含在該檔案中,包括你輸入的sql語句
SQL> SPOOL file_name
--5. 關閉spool輸出,只有關閉spool輸出,才會在輸出檔案中看到輸出的內容
SQL> SPOOL OFF
--6.顯示一個表的結構
SQL> desc table_name
--7. 將一個檔案中的sql語句匯入到sql buffer中
GET file_name
--8. 將sql buffer中的語句儲存到一個檔案中
SAVE /home/oracle/t.sql
--9. 改提示符
SQL>set sqlprompt 'session1>'


/* col命令 */
-- 1. 改變預設的列標題
COLUMN column_name HEADING column_heading
-- 2. 改變列的顯示長度
col ename format a40
-- 3. 設定列標題的對齊方式
col dname jus[tify] right
-- 4. 不讓一個列顯示在螢幕上
col dname nopri[nt]
-- 5. 格式化NUMBER型別列的顯示
col sal format $999.990
-- 6. 顯示列的當前的顯示屬性值
COLUMN column_name
-- 7. 將所有列的顯示屬性設為預設值
CLEAR COLUMNS

 /* set命令 */
-- 1. 在用start命令執行一個sql指令碼時,是否顯示指令碼中正在執行的SQL語句
SET ECHO {ON|OFF}
-- 2. 是否顯示當前sql語句查詢或修改的行數
SET FEED[BACK] {6|n|ON|OFF}
-- 3. 是否顯示列標題
SET HEA[DING] {ON|OFF}
-- 4. 設定一行可以容納的字元數
SET LIN[ESIZE] {80|n}
-- 5. 設定一頁有多少行數
SET PAGES[IZE] {24|n}
-- 6. 是否顯示用DBMS_OUTPUT.PUT_LINE包進行輸出的資訊。
SET SERVEROUT[PUT] {ON|OFF}
-- 7. 當SQL語句的長度大於LINESIZE時,是否在顯示時擷取SQL語句.on另起一行,off直接截掉
SET WRA[P] {ON|OFF}
-- 8. 是否在螢幕上顯示輸出的內容,主要用與SPOOL結合使用。
SET TERM[OUT] {ON|OFF}
-- 9. 將SPOOL輸出中每行後面多餘的空格去掉
SET TRIMS[OUT] {ON|OFF}
--10. 顯示每個sql語句花費的執行時間
set TIMING {ON|OFF}
--11. 允許sql語句中間有空行
SET SQLBLANKLINES ON
--12. 設定是否顯示替代變數被替代前後的語句
set verify on/off
--13. 自定義域分割
set colsep ,

/* show 顯示變數的值*/
-- 1. 顯示當前環境變數的值
show all
-- 2. 顯示當前在建立函式、儲存過程、觸發器、包等物件的錯誤資訊
show error
-- 3. 顯示初始化引數的值
show PARAMETER [parameter_name]
-- 4. 顯示資料庫的版本
show REL[EASE]
-- 5. 顯示oracle錯誤資訊程式碼
show sqlcode

/* buffer編輯命令 */

List:列出緩衝區的sql命令
Append:在緩衝區當前行新增內容
Change 字元1  字元2  :改變緩衝區的字元
input:在當前行後增加一行
n:把第n行設定為當前行
edit:編輯緩衝區
run /:執行緩衝區的命令

/* 替代變數,可用&,&&引用,定義替代變數 */
-- 1. 定義, DEFINE 變數名=值
def[ine] job=SALESMAN
select * from emp where job='&job';  --引用時加''
-- 2. 檢視變數,DEFINE [變數]
define [varname]
-- 3. 重新設定替代變數,hide隱藏
acc[ept] 變數名 [ char | date | [ num[ber] ] | binary_float | binary_double  ] --變數型別
                [ for[mat] format_str ] --格式
                [ default default_value ] --變數的預設值
                [ { prompt prompt_text } | nopr[ompt] ] --提示資訊
                [ hide ] --不顯示使用者輸入,類似於輸入不回顯密碼的輸入

/* 繫結變數 */
-- 1. 定義
SQL> var y numb
Usage: VAR[IABLE] [ [ NUMBER | CHAR | CHAR (n [CHAR|BYTE]) |
                    VARCHAR2 (n [CHAR|BYTE]) | NCHAR | NCHAR (n) |
                    NVARCHAR2 (n) | CLOB | NCLOB | BLOB | BFILE
                    REFCURSOR | BINARY_FLOAT | BINARY_DOUBLE ] ]
SQL> var y varchar2(20)
SQL> var
variable   y
datatype   VARCHAR2(20)
-- 2.賦值
SQL> exec :y := 'SCOTT'
-- 3.檢視所有,某個變數
SQL> var [y]
SQL> print [y]
-- 4.引用  --如果已經是字元型,不要再加''
SQL> select distinct owner from dba_segments where owner=:y;


/* @與@@的區別
@等於start命令,用來執行一個SQL指令碼檔案。
@命令呼叫當前目錄下的,或指定全路徑,或可以通過SQLPATH環境變數搜尋到的指令碼檔案。

@@用在指令碼檔案中,用來指定用@@執行的檔案與@@所在的檔案在同一目錄,
而不用指定全路徑,也不從SQLPATH環境變數指定的路徑中尋找檔案,一般用在巢狀指令碼檔案中。
*/

/* &與&&的區別
&用來建立一個臨時變數,每當遇到這個臨時變數時,都會提示你輸入一個值。

&&用來建立一個持久變數,就像用用define命令或帶new_vlaue字句的column命令建立的持久變數一樣。
當用&&命令引用這個變數時,只是在第一次遇到時提示一次。
*/

-------------------------------------------------------------------------------

/* 執行過程 */

BEGIN
    getDeptCount;
END;

EXEC getDeptCount

CALL  getDeptCount();

/* 執行函式 */

exec :dba := dbms_utility.make_data_block_address(4, 20);
print :dba

/* 引數傳遞

    1,位置傳遞 exec add_dept(50,'SALES','BEIJING')
    2,名稱傳遞 exec add_dept(v_dname=>'SALES',v_deptno=>50,v_loc=>'BEIJING')
    3,組合傳遞 exec add_dept(50,v_loc=>'BEIJING,v_dname=>'SALES')
*/


-- $ORACLE_HOME/sqlplus/admin/glogin.sql
define _editor=vim
set linesize 999
set pagesize 9999
set serveroutput on size 1000000
set trimspool on
column plan_plus_exp format a80

/* sqlplus help index */
$ ls /opt/oracle/112/sqlplus/admin/help
helpbld.sql  helpdrop.sql  helpus.sql  hlpbld.sql

--建立
sqlplus system/ @hlpbld.sql helpus.sql

--就是把helpus.sql內容插入help表中,所以沒開資料庫的時候,也可以參考看helpus.sql

 

 

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

相關文章