1. 创建一个显示雇员总人数的存储过程 emp_count,并执行该存储过程:
CREATE OR REPLACE PROCEDURE emp_count
IS
  total_count NUMBER;
BEGIN
  SELECT COUNT(*) INTO total_count FROM emp;
  dbms_output.put_line('Total number of employees: ' || total_count);
END;
/

EXEC emp_count;
  1. 编写显示雇员信息的存储过程 EMP_LIST,并引用 EMP_COUNT 存储过程:
CREATE OR REPLACE PROCEDURE emp_list
IS
  total_count NUMBER;
BEGIN
  emp_count;
  SELECT * FROM emp;
END;
/

EXEC emp_list;
  1. 创建函数,实现功能为:在 scott.emp 表和 scott.dept 表中查询出任意给定职工号的职工姓名及职工所在部门的名称:
CREATE OR REPLACE FUNCTION get_emp_dept_name (empno IN NUMBER)
RETURN VARCHAR2
IS
  emp_name VARCHAR2(20);
  dept_name VARCHAR2(20);
BEGIN
  SELECT e.ename, d.dname INTO emp_name, dept_name
  FROM emp e, dept d
  WHERE e.empno = empno AND e.deptno = d.deptno;
  RETURN emp_name || ' works in ' || dept_name;
END;
/

-- Usage: SELECT get_emp_dept_name(7369) FROM dual;
  1. 创建触发器,实现更新 dept 表中的 deptno 值,级联更新 emp 表中相应值:
CREATE OR REPLACE TRIGGER dept_update
AFTER UPDATE OF deptno ON dept
FOR EACH ROW
BEGIN
  UPDATE emp SET deptno = :new.deptno WHERE deptno = :old.deptno;
END;
/

-- Test the trigger by updating a department's deptno value.
Oracle 数据库实验:创建表、视图、存储过程、函数和触发器

原文地址: https://www.cveoy.top/t/topic/nF3A 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录