SQL存储过程、函数和触发器示例:EMP_LIST,getEmpDeptName,updateEmpDeptNo
2. EMP_LIST存储过程
以下是EMP_LIST存储过程的代码:
CREATE PROCEDURE EMP_LIST
AS
BEGIN
SELECT empno, ename, job, sal, deptno
FROM scott.emp;
EXECUTE EMP_COUNT;
END;
在该存储过程中,我们首先选择了scott.emp表中的所有雇员信息。接着,我们调用了EMP_COUNT存储过程,这个存储过程可以返回scott.emp表中的雇员总数。
3. 查询职工姓名及职工所在部门名称的函数
以下是查询职工姓名及职工所在部门名称的函数代码:
CREATE FUNCTION getEmpDeptName (@empno INT)
RETURNS TABLE
AS
RETURN (
SELECT e.ename, d.dname
FROM scott.emp e
INNER JOIN scott.dept d ON e.deptno = d.deptno
WHERE e.empno = @empno
);
在该函数中,我们传入了一个职工号,然后使用INNER JOIN从scott.emp和scott.dept表中检索出姓名和部门名称。
4. 更新dept表时级联更新emp表的触发器
以下是更新dept表时级联更新emp表的触发器代码:
CREATE TRIGGER updateEmpDeptno
ON scott.dept
AFTER UPDATE
AS
BEGIN
UPDATE e
SET e.deptno = i.deptno
FROM scott.emp e
INNER JOIN inserted i ON e.deptno = i.deptno;
END;
在该触发器中,我们定义了一个AFTER UPDATE触发器,当dept表中的deptno值更新时,该触发器就会被触发。在触发器的主体中,我们使用INNER JOIN将scott.emp和inserted表中的数据连接起来,并使用UPDATE语句将deptno值更新到scott.emp表中。这样就实现了级联更新。
原文地址: https://www.cveoy.top/t/topic/nxSG 著作权归作者所有。请勿转载和采集!