【发布时间】:2021-03-07 10:23:32
【问题描述】:
我有以下代码,它从部门号小于 40 的部门表中打印部门号和部门名称。
declare
cursor cn is select dno, dname from dept where dno<40;
v_dno dept.dno%type;
v_dname dept.dname%TYPE;
begin
open cn;
loop
fetch cn into v_dno,v_dname;
dbms_output.put_line(v_dno||' '||v_dname);
exit when cn%notfound;
end loop;
close cn;
end;
这是我得到的输出:
10 Administration
20 Marketing
30 Purchasing
30 Purchasing
但我期待的输出是:
Department_No Department_Name
10 Administration
20 Marketing
30 Purchasing
30 Purchasing
【问题讨论】:
-
除了其他 cmets,您还需要了解 dbms_output 完全在数据库引擎内部执行,not 写入屏幕也是如此。它写入内部缓冲区。过程完成后,当控制权返回给调用客户端时,客户端可能(或可能不)选择处理该缓冲区并显示结果。因此,将 dbms_output 用于演示或调试以外的用途并不是一个好主意。
标签: oracle plsql rdbms database-cursor