今天我們來聊一下Oracle的$$符號,大家知道這個符號的作用嗎?其實它主要用來進行占位符的替換,例如在動態SQL語句中使用。
下面我們來看一個簡單的例子:
SELECT * FROM employees WHERE department_id=$$;
這里的$$表示一個占位符,當我們執行SQL語句時,它會被具體的參數值替換掉。
例如我們執行以下語句:
EXECUTE IMMEDIATE 'SELECT * FROM employees WHERE department_id=$$' USING 20;
這里的USING 20就是將$$替換為具體的值20,最終執行的SQL語句是:
SELECT * FROM employees WHERE department_id=20;
這種方式可以很大程度上避免SQL注入的問題,因為傳入的參數都會被Oracle進行轉義處理。
$$符號也可以用在PL/SQL中,例如:
DECLARE v_dept_id NUMBER := $$; BEGIN -- 這里可以使用v_dept_id變量進行邏輯處理 END;
這里的$$也是一個占位符,當我們執行PL/SQL代碼時,它會被具體的參數值替換掉。這種方式比較適合于需要動態執行的PL/SQL代碼,可以避免硬編碼的問題。
除了使用通用的$$占位符外,我們還可以自定義占位符符號,例如:
SELECT * FROM employees WHERE department_id=:dept_id;
這里的:dept_id就是一個自定義的占位符,可以在執行SQL時使用EXECUTE IMMEDIATE ... USING ...的方式替換掉。
綜上所述,Oracle的$$符號是一個很實用的占位符,可以避免硬編碼和SQL注入的問題,大家可以在實際開發中嘗試使用。