Oracle 存储过程和函数示例:EMP_LIST 和 get_emp_details
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或其他工具中显示存储过程或函数的输出结果。
原文地址: https://www.cveoy.top/t/topic/nxU3 著作权归作者所有。请勿转载和采集!