在Oracle數據庫中,游標(Cursor)是一種用于操作和處理查詢結果集的對象
以下是一個簡單的示例,展示了如何在觸發器中使用游標:
CREATE OR REPLACE TRIGGER update_salary_trigger
AFTER INSERT ON employees
FOR EACH ROW
DECLARE
CURSOR c_employees IS
SELECT employee_id, salary
FROM employees
WHERE department_id = :new.department_id;
v_total_salary NUMBER := 0;
BEGIN
-- 遍歷游標,計算部門內員工的總薪水
FOR rec IN c_employees LOOP
v_total_salary := v_total_salary + rec.salary;
END LOOP;
-- 更新部門表中的總薪水字段
UPDATE departments
SET total_salary = v_total_salary
WHERE department_id = :new.department_id;
END;
/
在這個示例中,我們創建了一個名為update_salary_trigger
的觸發器。當在employees
表中插入新記錄時,觸發器會自動執行。觸發器首先定義了一個游標c_employees
,用于查詢與新插入員工相同部門的所有員工及其薪水。然后,觸發器遍歷游標,計算部門內員工的總薪水,并將結果存儲在變量v_total_salary
中。最后,觸發器使用UPDATE
語句更新departments
表中的total_salary
字段。
請注意,這個示例僅用于演示目的,實際應用中可能需要根據具體需求進行調整。