oracle编写存储过程根据员工号查询员工全部信息
时间: 2024-04-21 14:03:44 浏览: 111
详解Oracle调试存储过程
以下是一个Oracle存储过程的示例代码,可以根据员工号查询员工的全部信息:
```
CREATE OR REPLACE PROCEDURE get_employee_info (
p_empno IN NUMBER,
o_name OUT VARCHAR2,
o_job OUT VARCHAR2,
o_mgr OUT NUMBER,
o_hiredate OUT DATE,
o_sal OUT NUMBER,
o_comm OUT NUMBER,
o_deptno OUT NUMBER
)
IS
BEGIN
SELECT ename, job, mgr, hiredate, sal, comm, deptno
INTO o_name, o_job, o_mgr, o_hiredate, o_sal, o_comm, o_deptno
FROM emp
WHERE empno = p_empno;
END;
```
在这个存储过程中,我们定义了一个名为`get_employee_info`的存储过程,其参数包括一个员工号`p_empno`和七个输出参数,分别为员工姓名`o_name`、工作职位`o_job`、上级领导`o_mgr`、入职日期`o_hiredate`、工资`o_sal`、佣金`o_comm`和部门编号`o_deptno`。
在存储过程的主体中,我们使用SELECT语句从`emp`表中查询出与给定员工号匹配的员工记录,并将结果存储到对应的输出参数中。
要执行此存储过程并获取结果,可以使用以下代码:
```
DECLARE
v_name VARCHAR2(50);
v_job VARCHAR2(50);
v_mgr NUMBER;
v_hiredate DATE;
v_sal NUMBER;
v_comm NUMBER;
v_deptno NUMBER;
BEGIN
get_employee_info(7369, v_name, v_job, v_mgr, v_hiredate, v_sal, v_comm, v_deptno);
DBMS_OUTPUT.PUT_LINE('Name: ' || v_name);
DBMS_OUTPUT.PUT_LINE('Job: ' || v_job);
DBMS_OUTPUT.PUT_LINE('Manager: ' || v_mgr);
DBMS_OUTPUT.PUT_LINE('Hire Date: ' || v_hiredate);
DBMS_OUTPUT.PUT_LINE('Salary: ' || v_sal);
DBMS_OUTPUT.PUT_LINE('Commission: ' || v_comm);
DBMS_OUTPUT.PUT_LINE('Department Number: ' || v_deptno);
END;
```
在这个示例中,我们调用了`get_employee_info`存储过程来获取员工号为7369的员工的全部信息,并将结果输出到控制台上。
阅读全文