SQL Developer连接Oracle 10g执行DBMS_OUTPUT无输出问题求助
Oracle 10g SQL Developer DBMS_OUTPUT 无输出问题排查方案
常见原因及对应解决方法
- SET SERVEROUTPUT ON 作用域失效
该命令仅对当前执行的会话生效,若分开执行开启命令和PL/SQL块、执行后会话重连、在不同工作表执行代码,都会导致设置失效。
解决方法:将SET SERVEROUTPUT ON;与PL/SQL匿名块放在同一SQL工作表中,全选两段代码共同执行。 - DBMS Output 面板缓存不足
Oracle 10g默认DBMS_OUTPUT缓存大小有限,缓存被占满时输出内容会被丢弃,即使测试内容较短也可能存在缓存被修改为极小值的情况。
解决方法:在DBMS Output面板右键绑定的对应连接,选择「属性」,将缓存大小调整为100000字节及以上,重新执行代码。 - SQL Developer 版本兼容问题
较高版本的SQL Developer对Oracle 10g的适配存在已知bug,会出现已绑定连接但无法捕获输出的问题。
解决方法:- 重启SQL Developer后重新绑定DBMS Output连接,再次执行代码测试
- 若重启无效,可换用适配Oracle 10g的3.2版本SQL Developer,或使用sqlplus、PL/SQL Developer等其他客户端执行验证
- 权限或包调用异常
若当前用户没有DBMS_OUTPUT包的执行权限,或包调用被会话级规则拦截,也会无输出但返回执行成功提示。
解决方法:- 执行
SELECT * FROM USER_TAB_PRIVS WHERE TABLE_NAME = 'DBMS_OUTPUT';查询权限,若缺少权限联系DBA授予EXECUTE ON SYS.DBMS_OUTPUT权限 - 执行以下测试代码,手动指定缓存并验证输出:
SET SERVEROUTPUT ON; BEGIN DBMS_OUTPUT.ENABLE(100000); DBMS_OUTPUT.PUT_LINE('Testing output'); END; / - 执行
内容的提问来源于stack exchange,提问作者Zala Jaydipsinh
相关产品推荐
相关产品推荐

