oracle编写存储过程根据员工号查询员工全部信息
时间: 2024-04-21 12:05:54 浏览: 12
下面是一个示例Oracle存储过程,可以根据员工号查询员工的全部信息:
```sql
CREATE OR REPLACE PROCEDURE get_employee_info
( p_empno IN employees.empno%TYPE,
p_recordset OUT SYS_REFCURSOR )
AS
BEGIN
OPEN p_recordset FOR
SELECT *
FROM employees
WHERE empno = p_empno;
END;
```
这个存储过程接受一个员工号作为输入参数,然后使用该参数来查询employees表中的员工信息。查询结果将通过OUT参数p_recordset返回,这是一个游标类型的参数,可以在调用存储过程后迭代查询结果。
使用示例:
```sql
DECLARE
emp_recordset SYS_REFCURSOR;
empno NUMBER := 1001;
ename VARCHAR2(50);
job VARCHAR2(50);
mgr NUMBER;
hiredate DATE;
sal NUMBER;
comm NUMBER;
deptno NUMBER;
BEGIN
get_employee_info(empno, emp_recordset);
LOOP
FETCH emp_recordset INTO empno, ename, job, mgr, hiredate, sal, comm, deptno;
EXIT WHEN emp_recordset%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(empno || ' ' || ename || ' ' || job || ' ' || mgr || ' ' || hiredate || ' ' || sal || ' ' || comm || ' ' || deptno);
END LOOP;
CLOSE emp_recordset;
END;
```
在上面的示例中,我们声明了一个游标变量emp_recordset和一些其他变量,然后调用get_employee_info存储过程来查询员工信息。最后,我们使用游标变量来迭代查询结果,并将结果打印到控制台上。