我想知道为什么即使我将 SERVEROUPUT 变量设置为 ON 也不显示输出。
我有以下匿名块代码:
DECLARE
v_rec_count number:=0;
BEGIN
for rec in (SELECT T_A.ROWID, T_A.OPEN_COUNT, T_B.OPEN_COUNT as NEW_OPEN_COUNT
FROM T_A
INNER JOIN T_B ON
T_A.KEYA = T_B.KEYA
AND T_A.KEYB = T_B.KEYB
AND T_A.OPEN_COUNT <> T_B.OPEN_COUNT)
loop
v_rec_count := v_rec_count + 1;
update T_A t1
set t1.OPEN_COUNT = rec.NEW_OPEN_COUNT,
t1.UPD_USER_ID = 'batch',
t1.UPD_DATE = SYSDATE
where t1.rowid = rec.rowid;
end loop;
dbms_output.put_line ('T_A UPDATE_TOTAL: ' || v_rec_count);
END;
/
Run Code Online (Sandbox Code Playgroud)
当我执行以下代码时,当我通过 sqlplus 运行 sql 文件时,我希望看到 dbms_output.put_line 的输出到 sql 提示符并最终看到日志文件。该块所做的输出只是“PL/SQL 过程已成功运行”。
我已经在块之前设置了 SET SERVEROUPUT ON 但它不起作用。有任何想法吗?
Phi*_*lᵀᴹ 11
从下面的输出中可以看出,一个测试匿名 PL/SQL 块按预期在 SQL Plus 中工作:
[oracle@node1 ~]$ sqlplus phil/phil
SQL*Plus: Release 11.2.0.2.0 Production on Mon Oct 1 21:55:35 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> set serveroutput on
SQL> DECLARE
2 v_rec_count number;
3 BEGIN
4 select count(*) into v_rec_count from dual;
5 dbms_output.put_line ('count: ' || v_rec_count);
6 END;
7 /
count: 1
PL/SQL procedure successfully completed.
SQL>
Run Code Online (Sandbox Code Playgroud)
我猜您没有使用 SQL Plus 进行测试,而是在其他工具(例如 SQL Developer)中进行测试,并且未设置DBMS_OUTPUT.enable()
或您尚未配置该工具以正确显示 RDBMS 的输出。
或者,这可能SET SERVEROUPUT ON
是一个错字的事实:)
归档时间: |
|
查看次数: |
47007 次 |
最近记录: |