创建一个PL/SQL块,要求在键盘中输入部门号,屏幕上显示该部门的所有雇员的雇员号、雇员姓名和工资和总人数(要求定义有参游标传入部门号实现该部门所有雇员的查找,要求分别使用两种方式遍历游标:while、for) 请用10号部门做测试。
时间: 2024-02-26 19:57:08 浏览: 152
Oracle 遍历游标的四种方式汇总(for、fetch、while、BULK COLLECT)
好的,以下是PL/SQL块的代码,可以实现输入部门号后显示该部门的所有雇员的雇员号、雇员姓名和工资以及总人数:
```
DECLARE
v_deptno NUMBER(2) := &deptno; -- 输入部门号
v_empno NUMBER(4);
v_ename VARCHAR2(10);
v_sal NUMBER(7,2);
v_total NUMBER(2) := 0;
CURSOR c_emp (p_deptno NUMBER) IS -- 定义有参游标
SELECT empno, ename, sal FROM emp WHERE deptno = p_deptno;
BEGIN
-- while 循环遍历游标
OPEN c_emp(v_deptno);
LOOP
FETCH c_emp INTO v_empno, v_ename, v_sal;
EXIT WHEN c_emp%NOTFOUND;
v_total := v_total + 1;
DBMS_OUTPUT.PUT_LINE('EMPNO: ' || v_empno || ', ENAME: ' || v_ename || ', SAL: ' || v_sal);
END LOOP;
CLOSE c_emp;
-- for 循环遍历游标
OPEN c_emp(v_deptno);
FOR r_emp IN c_emp LOOP
v_total := v_total + 1;
DBMS_OUTPUT.PUT_LINE('EMPNO: ' || r_emp.empno || ', ENAME: ' || r_emp.ename || ', SAL: ' || r_emp.sal);
END LOOP;
CLOSE c_emp;
DBMS_OUTPUT.PUT_LINE('TOTAL EMPLOYEES: ' || v_total);
END;
```
请注意,这段代码中的“&deptno”是一个输入参数,会在程序执行前要求用户输入部门号,所以请在运行程序时输入“10”作为部门号。另外,此代码适用于Oracle数据库。
阅读全文