我在针对Linux作业的oracle sqlplus查询中使用XMLSerializer。在SQLDeveloper命令选项卡上,一切看起来都很好,但是在linux上,我看到xml输出带有空格:
${ORAPLUS} -s /@tns_entry <<_ORALINE
--WHENEVER OSERROR EXIT 1
WHENEVER SQLERROR EXIT SQL.SQLCODE
SET TERM OFF
SET SHOW OFF
SET FEEDBACK OFF
SET HEADING OFF
SET HEAD OFF
SET PAGESIZE 0
set linesize 180
--set wrap on
set long 100000
SET LONGCHUNKSIZE 100000
SPOOL ${SPOOLFILE} APPEND
select xmlserialize(content xmlelement( "parent", xmlelement("child",
xmlelement("child-of-child", 'value'))) indent size=2) from dual;
SPOOL OFF
EXIT 0
_ORALINE
输出:
<parent>
<child> How do I get rid of the spaces here?
<child-of-child>value</child-of-child>
</child>
</parent>
我当然可以运行post-pretty-up命令来删除结尾的空格,但这似乎是在征服症状。
答案 0 :(得分:4)
执行此操作并不是真正的XMLSerialize()
调用,这是假脱机数据的默认行为。
在脚本中,添加:
SET TRIMSPOOL ON
From the SQL*Plus documentation:
SET TRIMS [POOL] {ON | OFF}
确定SQL * Plus是否在每个假脱机行的末尾放置尾随空格。
ON
删除每行末尾的空格。OFF
使SQL * Plus可以包含尾随空格。
交互式会话SET TEIMOUT ON
有一个等效项,如果您重定向输出而不是假脱机输出,则很有用。