在cmd中执行PL/SQL简单查询无法得到正确结果的问题咨询
问题产生原因
该问题是在SQL*Plus命令行工具中执行PL/SQL代码时的典型异常,由两个配置/语法问题共同导致:
- 未开启服务输出开关:SQL*Plus默认关闭
SERVEROUTPUT配置,即使代码中调用了DBMS_OUTPUT.PUT_LINE('Hello World'),也不会打印对应内容,仅会提示PL/SQL过程执行完成。 - PL/SQL块缺少结束执行符:PL/SQL块需要以单独占一行的
/作为执行结束标识,如果你没有添加该标识,SQL*Plus会判定你仍在输入块内容,此时显示的数字为当前输入行的行号,每按一次回车行号自动+1,工具始终处于等待输入状态,自然无法执行其他文件。你首次看到的数字7,就是你触发异常时累计输入的行数。
可行修正方案
无需重启cmd窗口,按以下步骤操作即可修复:
- 终止当前输入状态:直接输入
.并按回车,即可退出PL/SQL块输入模式,回到正常的SQL>提示符界面。 - 开启输出配置:执行命令
SET SERVEROUTPUT ON;,该配置在当前会话生效,可让DBMS_OUTPUT的内容正常打印。 - 正确书写并执行PL/SQL块,示例代码如下:
BEGIN DBMS_OUTPUT.PUT_LINE('Hello World'); END; /
注意结尾的/必须单独占一行,输入后按回车即可正常执行,打印出Hello World内容,执行完成后自动回到SQL>提示符,可正常运行其他文件。
内容的提问来源于stack exchange,提问作者dee
相关产品推荐
相关产品推荐

