Oracle 存储过程和函数示例

EMP_LIST 存储过程

CREATE OR REPLACE PROCEDURE emp_list AS
  emp_record EMP%ROWTYPE;
  CURSOR emp_cursor IS SELECT * FROM EMP;
BEGIN
  emp_count;
  DBMS_OUTPUT.PUT_LINE('雇员信息:');
  OPEN emp_cursor;
  LOOP
    FETCH emp_cursor INTO emp_record;
    EXIT WHEN emp_cursor%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(emp_record.EMPNO || ' ' || emp_record.ENAME || ' ' || emp_record.JOB || ' ' || emp_record.MGR || ' ' || emp_record.HIREDATE || ' ' || emp_record.SAL || ' ' || emp_record.COMM || ' ' || emp_record.DEPTNO);
  END LOOP;
  CLOSE emp_cursor;
END;

该存储过程打开一个游标,检索EMP表中的所有记录,然后使用DBMS_OUTPUT.PUT_LINE函数将每条记录打印到控制台。它还调用emp_count存储过程来显示表中员工总数。

get_emp_details 函数

CREATE OR REPLACE FUNCTION get_emp_details(empno IN NUMBER)
RETURN VARCHAR2
IS
  emp_name VARCHAR2(50);
  dept_name VARCHAR2(50);
BEGIN
  SELECT e.ename INTO emp_name FROM scott.emp e WHERE e.empno = empno;
  SELECT d.dname INTO dept_name FROM scott.dept d WHERE d.deptno = (SELECT e.deptno FROM scott.emp e WHERE e.empno = empno);
  RETURN emp_name || ' works in ' || dept_name || ' department';
END;

该函数接收一个参数empno,它是我们要检索其详细信息的员工编号。然后,它使用两个SELECT语句分别从scott.emp和scott.dept表中检索员工姓名和部门名称。最后,它将两个值连接起来并以字符串形式返回。

注意:

  • 以上代码示例仅供参考,可能需要根据您的实际需求进行修改。
  • 请确保您的数据库中存在scott.emp和scott.dept表。
  • 可以使用DBMS_OUTPUT.PUT_LINE函数在SQL*Plus或其他工具中显示存储过程或函数的输出结果。
Oracle 存储过程和函数示例:EMP_LIST 和 get_emp_details

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

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