我正在尝试开发一个程序,它从用户那里获取一个数字,按最高工资对雇员进行排序,并显示与输入数字相等的行数,以显示最高收入者。该程序还应该验证上一个雇员是否与下一个雇员获得了相同的工资。如果是这样,下一个雇员也应该显示出来。
我试图修改代码,但似乎没有任何更改有效。您对如何使代码按照提供的说明运行有什么建议吗?功能代码包括在下面。
谢谢你。
代码:
CREATE OR REPLACE PROCEDURE p5_q5 (num_employee NUMBER) AS
BEGIN
FOR emp IN (SELECT ENAME, SAL
FROM EMP
ORDER BY SAL DESC
FETCH FIRST num_employee ROWS ONLY) -- Will be returned X rows according to input of the user (num_employee)
LOOP
DBMS_OUTPUT.PUT_LINE('Employee name: ' || emp.ENAME || ' - Salary: ' || emp.SAL);
END LOOP;
END;
/
EXEC p5_q5(3);
- 产出:
员工姓名:国王-薪金:5512.5员工姓名:琼斯-工资:3570员工姓名:斯科特-工资:3450
- 理想输出:
员工姓名:国王-薪金:5512.5员工姓名:琼斯-工资:3570员工姓名:斯科特-工资:3450员工姓名:福特-薪酬:3450
我尝试了几种策略,但都没有成功地开发出一种方法来确定下一个员工是否与上一个员工挣到相同的薪水,并在他们挣到相同的薪水时显示该员工。
2条答案
按热度按时间xqkwcwgp1#
使用
FETCH FIRST n ROWS WITH TIES
:其中,对于示例数据:
然后:
以及
两个输出:
以及:
输出:
fiddle
8ehkhllq2#