【发布时间】:2018-10-31 23:11:48
【问题描述】:
SET SERVEROUTPUT ON;
DECLARE
CURSOR cemp
IS
SELECT esal
FROM emp
ORDER BY esal DESC;
a NUMBER (10) := &a;
sal emp.esal%TYPE;
BEGIN
OPEN cemp;
LOOP
FETCH cemp INTO sal;
DBMS_OUTPUT.put_line (sal);
EXIT WHEN cemp%ROWCOUNT = a OR cemp%NOTFOUND;
END LOOP;
CLOSE cemp;
END;
我已经编写了上面的pl/sql程序来显示顶级'a'员工的工资。我已经在sql developer中执行了代码。但是我没有得到任何输出。代码中有什么问题吗?
【问题讨论】:
-
首先检查您是否可以使用
dbms_output.put_line。只需做一个简单的“Hello, world”测试,无需任何循环或表格。也许在 SQL*Plus 中使用set serveroutput on对其进行测试。然后,如果可行,请自行测试查询。听起来问题不在于 Top-N 的薪水,而在于使用这些工具。 -
我已经在 TOAD 中执行了你的代码,它确实正确显示了工资。
-
还要验证您在 esal 列中没有空值 - 如果有,请最后按 esal desc 空值排序;
标签: sql oracle plsql dbms-output