阅读量:0
在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
字段。
请注意,这个示例仅用于演示目的,实际应用中可能需要根据具体需求进行调整。