存储过程
存储过程定义



存储过程管理
存储过程查看

存储过程编译
存储过程删除
存储过程调用执行



练习
-- 创建存储过程 DepSalary
CREATE OR REPLACE PROCEDURE DepSalary IS
-- 定义游标
CURSOR salary_cursor IS
SELECT Department, SUM(Salary) AS TotalSalary
FROM Employee
GROUP BY Department;
-- 定义变量
department_name Employee.Department%TYPE;
total_salary NUMBER;
BEGIN
-- 打开游标
OPEN salary_cursor;
-- 循环遍历结果集
LOOP
-- 从游标中检索数据
FETCH salary_cursor INTO department_name, total_salary;
-- 退出循环条件
EXIT WHEN salary_cursor%NOTFOUND;
-- 在屏幕上输出结果
DBMS_OUTPUT.PUT_LINE('Department: ' || department_name || ', Total Salary: ' || total_salary);
END LOOP;
-- 关闭游标
CLOSE salary_cursor;
END DepSalary;
/
-- 执行存储过程
EXEC DepSalary;
触发器
触发器定义
触发器创建
基于DML操作的触发器



基于DDL的触发器


数据库系统操作触发器


触发器管理
触发器查看


触发器编译
触发器屏蔽
触发器删除
练习
CREATE OR REPLACE TRIGGER T_Employee_Delete
BEFORE DELETE ON Employee
FOR EACH ROW
DECLARE
v_deleDate DATE;
BEGIN
-- 获取当前系统日期作为删除日期
v_deleDate := SYSDATE;
-- 插入删除记录到 EmployeeBackup 表
INSERT INTO EmployeeBackup (id, deleDate, empID, empName, operUser)
VALUES (:OLD.id, v_deleDate, :OLD.empID, :OLD.empName, :OLD.operUser);
END;
/
PL/SQL事务

事务SQL语句
事务程序结构


事务隔离等级