假设我们需要查询特定员工的工资信息,并进行更新操作。传统的方法是在 SQL 语句中直接使用员工的 ID 和工资数值。然而,这种方式容易导致 SQL 注入攻击,并且每次执行 SQL 语句都需要重新解析和编译,浪费了系统资源和时间。
现在,我们使用绑定变量来改进代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
DECLARE v_employee_id EMPLOYEES.EMPLOYEE_ID%TYPE :=100; -- 绑定变量 v_salary EMPLOYEES.SALARY%TYPE; BEGIN SELECT salary INTO v_salary FROM EMPLOYEES WHERE employee_id = v_employee_id;
-- 执行其他 PL/SQL 逻辑或业务处理
UPDATE EMPLOYEES SET salary = v_salary +1000WHERE employee_id = v_employee_id;
COMMIT; DBMS_OUTPUT.PUT_LINE('工资更新成功'); EXCEPTION WHEN OTHERS THEN ROLLBACK; DBMS_OUTPUT.PUT_LINE('出现错误: '|| SQLERRM); END;
DECLARE TYPE emp_id_list ISTABLEOF EMPLOYEES.EMPLOYEE_ID%TYPE INDEX BY PLS_INTEGER; TYPE sal_list ISTABLEOF EMPLOYEES.SALARY%TYPE INDEX BY PLS_INTEGER;