【发布时间】:2014-11-18 23:19:21
【问题描述】:
我定义了一个函数,它返回一个包含 5 个文本列的 sys_refcursor。对不起,出于商业原因,我不能在这里发布它的内容。这些列被转换为具有特定宽度 (9,4,10,10,10) 的 varchar2。铸造使我能够确保列宽是恒定的。
在 SQL Developer 1.5 中,打印脚本输出(使用 SQL 工作表中的 F5)将光标的内容很好地显示为:
MY_FUNCTION(input1,input2,input3)
---------------------------------
COLUMN1 COLU COLUMN3 COLUMN4 COLUMN5
--------- ---- ---------- ---------- ----------
18-NOV-14 TEXT SOME_DATA1 SOME_DATA2 SOME_DATA3
18-NOV-14 TEXT SOME_DATA1 SOME_DATA2 SOME_DATA3
18-NOV-14 TEXT SOME_DATA1 SOME_DATA2 SOME_DATA3
18-NOV-14 TEXT SOME_DATA1 SOME_DATA2 SOME_DATA3
但是,在 SQL Developer 4.0 中,输出在函数调用的宽度处包装(类似于 SQLPlus 的 linesize 参数):
MY_FUNCTION(input1,input2,input3)
---------------------------------
COLUMN1 COLU COLUMN3 COLUMN4
COLUMN5
--------- ---- ---------- -------
--- ----------
18-NOV-14 TEXT SOME_DATA1 SOME_DA
TA2 SOME_DATA3
18-NOV-14 TEXT SOME_DATA1 SOME_DA
TA2 SOME_DATA3
18-NOV-14 TEXT SOME_DATA1 SOME_DA
TA2 SOME_DATA3
18-NOV-14 TEXT SOME_DATA1 SOME_DA
TA2 SOME_DATA3
数据库版本为 11g。我尝试使用“set linesize 1000”命令,但输出仍然以相同的长度换行。但是,将 linesize 设置为 5 会导致它在 5 个字符处换行。
在不使用任何“set”命令的情况下,SQL*Plus 中的输出显示正常。
有没有办法在 4.0 中防止光标内容的换行?
【问题讨论】:
-
我只看到如果我将 ref 光标作为选择列表的一部分返回;如果我将函数值分配给
refcursor变量,然后分配给print,它会按预期显示。你在做什么?如果您正在选择,作为一种解决方法,您是否可以只使用大尺寸的column命令,如果您可以在查询中为列设置别名,这会更容易吗? -
对列进行别名肯定是一种选择,所以我会尝试使用列格式。我以为是 SQLPlus 命令,所以没试过。
标签: oracle oracle-sqldeveloper sys-refcursor