如何在SQL*Plus中打印变量值时隐藏变量名等多余输出
SQL*Plus 纯变量值输出实现方案
现有配置失效原因
- 配置中
SET FEEDBACK ON会强制返回PL/SQL procedure successfully completed.类执行反馈,是多余提示的核心来源之一 - 配置中写的
SET TRIMS ON为无效参数,SQL*Plus对应去除尾部空格的参数为SET TRIMOUT ON(屏幕输出)、SET TRIMSPOOL ON(spool文件输出) - 缺少
SET NEWPAGE NONE配置,无法屏蔽输出前的多余空行 - 原生
print命令自带列名、分隔线输出逻辑,即使关闭HEADING也无法完全过滤冗余内容,不适合纯值输出场景
正确配置与实现代码
先执行以下环境参数配置:
SET FEEDBACK OFF SET HEADING OFF SET VERIFY OFF SET ECHO OFF SET PAGESIZE 0 SET NEWPAGE NONE SET TRIMOUT ON SET TRIMSPOOL ON SET LINESIZE 1000 SET SERVEROUTPUT ON
实现方式1:通过SELECT直接取绑定变量值
配置完成后执行以下代码即可直接输出纯变量值:
var cvar varchar2(20) exec :cvar := 'variable value' SELECT :cvar FROM dual;
实现方式2:通过DBMS_OUTPUT直接输出
如果需要更灵活的输出控制,可直接调用系统输出过程打印变量,不会产生任何列名、分隔线类冗余内容:
var cvar varchar2(20) exec :cvar := 'variable value' exec dbms_output.put_line(:cvar);
效果验证
以上两种方式执行后,输出结果仅保留变量值本身:
variable value
内容的提问来源于stack exchange,提问作者Anantha krishnan
相关产品推荐
相关产品推荐

