SQL Developer脚本输出截断sys_refcursor宽度

时间:2014-11-18 23:19:21

标签: oracle oracle-sqldeveloper sys-refcursor

我定义了一个函数,它返回一个包含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中包装光标内容?

1 个答案:

答案 0 :(得分:0)

不直接回答问题 - 我不知道为什么行为不同或者在从查询调用函数时如何更改它,而不是使用column命令来设置宽度,使用别名这里是为了简化一些事情:

set lines 250
column rc format a250
select my_function(input1,input2,input3) as rc from dual;

但是你也可以通过不同的方式调用函数来获得你想要的输出;使用变量和匿名块(或execute作为速记):

variable rc refcursor;
exec :rc := MY_FUNCTION(input1,input2,input3);
print rc

嗯,几乎就像你想要的那样;输出的第一行是变量名而不是函数/参数列表;但光标列未包装:

anonymous block completed
RC
---------------------------------------------------------------------------
COLUMN1                   COLUMN2 COLUMN3    COLUMN4    COLUMN5    
------------------------- ------- ---------- ---------- ---------- 
18-NOV-14                 text    some_data1 some_data2 some_data3 

您还可以从代码编辑器(而不是工作表)运行您的函数,它会为您生成匿名块;当你点击运行箭头(或点击控制-F10)时,你会得到一个如下对话框:

enter image description here

运行后,您会在主窗口底部看到一个“输出变量”标签,该标签显示网格中的光标输出。

运行select my_function(...) from dual时,您还可以看到网格视图。光标进入正常的“查询结果”窗口但不是非常友好的形式,显示为:

{<COLUMN1=19-NOV-14,COLUMN2=text,COLUMN3=some_data1,COLUMN4=some_data2,COLUMN5=some_data3>,}

但是,如果您双击一个值,那么您会在该列的最右侧看到一个黄色铅笔符号,然后单击该符号会将该光标显示在其自己的网格中。

我个人更喜欢脚本输出中的print选项,但我很少使用网格显示。