SQL/PLUS 常用命令

chicken0915發表於2012-07-15

//檢視幫助資訊
sqlplus -h

//檢視sqlplus版本,高版本的客戶端可以連線低版本的資料庫,反之則可能會出現問題。
sqlplus -v

//靜默方式執行sqlplus
sqlplus -s

//作業系統認證
sqlplus /as sysdba

//9i的連結方式是要使用引號
sqlplus "/as sysdba"

//不直接登入資料庫模式
sqlplus /nolog

//斷開連線
disconn

//檢視緩衝區內容,list不是sql和pl sql的命令,是sqlplus的命令。
緩衝區只保留一條語句的命令
list

//執行緩衝區的命令
run :顯示執行
/   :隱式執行

//儲存緩衝區的命令到指定路徑
save /u01/***.sql

//安裝sqlplus幫助,使用system使用者登入oracle執行以下命令。
@?/sqlplus/admin/help/hlpbld.sql helpus.sql  :有錯誤提示可以不用理睬

//刪除sqlplus幫助,使用system使用者登入oracle執行以下命令。
@?/sqlplus/admin/help/helpdrop.sql

//列出所有sqlplus的命令
help index

//查詢指定命令的使用方法,如set
help set | ? set

//退出sqlplus,退出同時會顯示退出資料庫的版本資訊
EXIT | QUIT | Ctrl+D on unix | Ctrl+Z on wimdows

//列出一個表或者檢視的定義,或者函式的藉口等資訊
describe table | desc table

顯示下列函式結構
desc afunc

//建立一個簡單的函式
create or replace function afunc (f1 varchar2, f2 number) return number as
 begin
  if (length(f1) > f2) then
   return 1;
  else
   return 0;
  end if;
 end;
/


//結束當前執行的命令
;| / |
2次回車,儲存命令到緩衝區,但是不執行。

//結束PL/sql Blocks
 /  :結束並執行
 .  :結束不執行
 
 //進入PL/SQL模式
 declare|begin
 
 //列印內容到當前螢幕
 set serveroutput on
 
 //SQLPLUS 執行作業系統命令
 hsot |! on unix | $ on windows
 
 //寫一個簡單的指令碼lzk.sql 使用@或者@@ 呼叫
begin
for i in 1 .. 1000
loop
 insert into t values(i,'lzk');
end loop;
commit;
end;
/
select count(*) from t;
 
//檢視和編輯buffer的命令。
SQL> l
  1  begin
  2  for i in 1 .. 1000
  3  loop
  4  insert into t values(i,'lzk');
  5  end loop;
  6  commit;
  7* end;
SQL> l2
  2* for i in 1 .. 1000
SQL> c/1000/2000
  2* for i in 1 .. 2000
SQL> l
  1  begin
  2  for i in 1 .. 2000
  3  loop
  4  insert into t values(i,'lzk');
  5  end loop;
  6  commit;
  7* end;
SQL>
SQL> 0 /* this is a demo sql statmement */
SQL> l
  1  /* this is a demo sql statmement */
  2  begin
  3  for i in 1 .. 2000
  4  loop
  5  insert into t values(i,'lzk');
  6  end loop;
  7  commit;
  8* end;
SQL>
SQL> 1
  1* /* this is a demo sql statmement */
SQL> i haah haah haah haah haah
SQL> l
  1  /* this is a demo sql statmement */
  2  haah haah haah haah haah
  3  begin
  4  for i in 1 .. 2000
  5  loop
  6  insert into t values(i,'lzk');
  7  end loop;
  8  commit;
  9* end;
SQL>
SQL> l
  1  /* this is a demo sql statmement */
  2  haah haah haah haah haah
  3  begin
  4  for i in 1 .. 2000
  5  loop
  6  insert into t values(i,'lzk');
  7  end loop;
  8  commit;
  9* end;
SQL> del 2
SQL> l
  1  /* this is a demo sql statmement */
  2  begin
  3  for i in 1 .. 2000
  4  loop
  5  insert into t values(i,'lzk');
  6  end loop;
  7  commit;
  8* end;
SQL>

//指令碼里加註釋
REMARK|REM :註釋一行        :SQL*PLUS 註釋
/* ... */  :註釋單行或者多行,C的遺傳。 :SQL 註釋
--         :註釋一行      :SQL 註釋

//不可以在註釋內使用'&'特殊字元
//不可以在關鍵字內新增使用註釋

//執行指令碼時顯示內容
set echo on

//啟動SQLPLUS時直接啟動一個附加的指令碼,3種不同方式的範例。
sqlplus sys/sys as sysdba @/u01/lzk/select.sql    
sqlplus sys/sys as sysdba @http://www.lzk.com/lzk/select.sql
sqlplus @select.sql

//指令碼巢狀指令碼

//spool列印
spool /u01/lzk/spool.txt
......
...
......
spool off

//替代環境變數
select * from t where id=&myid;

 

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

相關文章