在 SQL*Plus 等工具中,替換變數(以 & 前綴)讓 SQL 語句參數化,執行時動態提示輸入,大幅提升互動性與腳本重用性。
SELECT &col_list FROM employees WHERE department_id = &dept_id;
& 即為替換變數
-- 定義時包含引號,執行時無需輸入引號
SELECT * FROM employees WHERE last_name = '&emp_name';
-- 執行時輸入: King (而非 'King')
原則:SQL 語句中需引號的地方,定義替換變數時就加上引號。
DEFINE dept_id = 10
DEFINE emp_name = 'King'
DEFINE -- 列出所有替換變數
DEFINE dept_id -- 查看特定變數值
UNDEFINE dept_id -- 取消預設值
DEFINE 寫在腳本開頭,隨腳本自動載入DEFINE 僅支援字元型,數值型需用 ACCEPT:
ACCEPT salary NUMBER PROMPT 'Enter salary: ' DEFAULT 5000
col_ 前綴,條件變數用 cond_ 前綴
PROMPT === Employee Query Script ===
ACCEPT dept_id NUMBER PROMPT 'Department ID: ' DEFAULT 10
ACCEPT emp_name CHAR PROMPT 'Employee Name (optional): '
PROMPT Querying department &dept_id ...
PAUSE 'Press Enter to execute...'
SELECT * FROM employees WHERE department_id = &dept_id AND (last_name = '&emp_name' OR '&emp_name' IS NULL);
VARIABLE 宣告 + EXECUTE 賦值,較繁瑣