SQLPlus
常用技巧
show user
conn system/pass -- 登入資料庫
r -- 執行前一個SQL
/ -- 執行前一個SQL
@?/rdbms/xxx.sql -- @ 執行外部SQL檔, ? Oracle_HOME
!ls -- ! 執行Linux 系統指令
set timing on -- 顯示SQL執行耗費時間
Rem This is a comment -- 註解, 不要加分號
l -- 顯示前一個 SQL 內容, 直接輸入分號也可以
3 -- 移動至 SQL 內容裡的第3行
3 where status='INVALID' -- 將第3行改成 where status='INVALID'
c/INVALID/VALID/ -- 將目前行內容的 INVALID 取代成 VALID, c = change
輸出格式化
set pagesize 60 -- 輸出每頁行數,預設為24,為了避免分頁,可設定為0, 若設0, 不會顯示欄位名稱。
set linesize 350 -- 每行長度(太小會斷行,太大效能差)
set wrap off -- 不斷行
set space 1 -- 欄位間空幾個space
set echo on -- Show SQL語法在畫面上
col tablespace_mb heading 'TABLESPACE|TOTAL MB' -- 設定長標題以斷行顯示
col os_user_name head "OS|Username" form a10 truncate
col process head "Client|Process|ID" form 99999999
set termout off --顯示腳本中的命令的執行結果
set trimout on --刪除標準輸出每行的行尾空格
set trimspool on --刪除行尾空白
Select 欄位A||'┴'|| replace(欄位B ,CHR(10),CHR(13))||'┴' from 資料庫.資料表 where 欄位B is not null order by 欄位A;
因為欄位B 裡有斷行符號^p,要將他轉換成分行符號^l^p, ^l為word 的代碼,ASCII碼分別為 CHR(10),CHR(13)欄位A與欄位B間,用┴作區隔。
set feedback off -- 不顯示結果筆數的資訊
set heading off -- 不顯示欄位的標題欄
去除 TAB 與格式化輸出
set colsep "|"
set tab off
定義變數
var tbs_source varchar2(50);
var tbs_dest varchar2(50);
var schema_user varchar2(50);
exec :tbs_source := 'SOURCE_TBS';
exec :schema_user := 'SOURCE_USER';
exec :tbs_dest := 'DEST_TBS';
select 'Transporting tablespace ' || :tbs_source || ' or user ' || :schema_user || ' to tablespace ' || :tbs_dest from dual;
特殊字元
-- 換行
chr(10)
註解文字
-- 單行說明
/* 這是多行
說明 */
顯示系統時間
select to_char(sysdate, 'yyyy/mm/dd hh24:mi:ss') Begin_Datetime from dual;
!sleep 5
select to_char(sysdate, 'yyyy/mm/dd hh24:mi:ss') End_Datetime from dual;
No Comments