SQLPLUS中的长PL / SQL输出

时间:2012-04-20 14:15:55

标签: oracle plsql sqlplus

在SQLPLUS下执行我的脚本时遇到问题。在SQL Developer下它运行良好。

set serveroutput on size 1000000
declare
yyy varchar2(32000):='';
begin
yyy := 'XxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzz';
yyy := yyy || 'XxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzz';
yyy := yyy || 'XxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzz';
dbms_output.put_line(yyy);
end;
/

在SQLPLUS下我收到错误:

ORA-06502: PL/SQL: numeric or value error: character to number conversion error ORA-06512: at line 1

如何强制在SQLPLUS下强制运行具有长输出的脚本?我需要输出,因为我将结果假脱机到文件。

1 个答案:

答案 0 :(得分:1)

您正在使用Oracle 10g以上的Oracle客户端来对抗Oracle 10g数据库

请在下面找到ASKTOM的报价

问题不在运行时,你显然是在10.2或更高版本的数据库上使用旧客户端。数据库代码运行良好

当客户端从数据库中获取您正在查看异常的字符串时。

sqlplus正在做这样的事情:

a)调用过程/代码 - 它运行并填充dbms_output缓冲区,即包中的数组。

b)然后sqlplus调用dbms_output.GET_LINES来获取要打印的缓冲输出。这是失败的电话。

更多信息请参阅

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1011431134399