整理自 Oracle 官方 CHM 幫助文件的常見問題清單,涵蓋 SQL 查詢、PL/SQL 開發、效能調校、安全管理等核心主題,供開發人員與 DBA 快速檢索。
%、_ 的資料(使用 ESCAPE 子句)INSERT INTO t VALUES ('It''s OK'); 或使用 q'[...]' 引用符SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;FOR UPDATE 鎖定列再 UPDATE ... WHERE CURRENT OF cursor;DECLARE e_custom EXCEPTION; PRAGMA EXCEPTION_INIT(e_custom, -20001);TO_NUMBER('FF','XX')、TO_CHAR(255,'FMXX')SAMPLE(n)、DBMS_RANDOM.VALUE、ORDER BY DBMS_RANDOM.RANDOMOFFSET ... FETCH、舊版 ROWNUM 子查詢寫法ROW_NUMBER() OVER (PARTITION BY ...)、GROUP BY ... HAVING COUNT(*) > 1PRAGMA AUTONOMOUS_TRANSACTION; 獨立提交/回滾DBMS_LOCK.SLEEP(seconds); 或 DBMS_SESSION.SLEEP (18c+)V$TRANSACTION、V$SESSTAT 統計CREATE GLOBAL TEMPORARY TABLE ... ON COMMIT PRESERVE/DELETE ROWS;EXECUTE IMMEDIATE 'CREATE INDEX ...'; 需動態 SQLSYS_CONTEXT('USERENV','IP_ADDRESS') 或 UTL_INADDR.GET_HOST_ADDRESSWRAP 工具或 DBMS_DDL.WRAP (參見文章 125367)DBMS_SCHEDULER.CREATE_JOB (10g+ 推薦) 或 DBMS_JOB (舊版)SYSTIMESTAMP、DBMS_UTILITY.GET_TIME (百分秒)、SYSDATE 無毫秒MERGE INTO target USING source ON (...) WHEN MATCHED THEN UPDATE ... WHEN NOT MATCHED THEN INSERT ...LEFT/RIGHT/FULL OUTER JOIN、(+) 舊語法INSERT ALL WHEN cond1 THEN INTO t1 ... WHEN cond2 THEN INTO t2 ... SELECT ... FROM src;PIVOT/UNPIVOT 子句、舊版 DECODE/CASE 聚合ROW_NUMBER() OVER (PARTITION BY grp ORDER BY val DESC) <= NLISTAGG(col, ',') WITHIN GROUP (ORDER BY seq) (11g+)NTH_VALUE、DENSE_RANK、子查詢 ROWNUMSPOOL file.txt、UTL_FILE、DBMS_SCHEDULER 搭配 ShellAUTHID DEFINER | CURRENT_USERHOST cmd、!cmd (Unix)、$cmdDBMS_STATS.FLUSH_DATABASE_MONITORING_INFO + USER_TAB_MODIFICATIONS、NUM_ROWS 統計值UTL_MAIL.SEND、UTL_SMTP 低階控制UTL_FILE.PUT_LINE、DBMS_SCHEDULER 外部作業SQL Language Reference、PL/SQL Packages and Types Reference。這份 FAQ 索引涵蓋了 Oracle 開發與管理 90% 以上的常見場景。熟練掌握這些技巧,能大幅提升解決問題的速度與品質。