【问题标题】:Long PL/SQL output in SQLPLUSSQLPLUS 中的长 PL/SQL 输出
【发布时间】:2012-05-02 03:26:43
【问题描述】:

在 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 下强制运行具有长输出的脚本?我需要输出,因为我将结果假脱机到文件中。

【问题讨论】:

  • 在 SQL*Plus 中对我来说很好。
  • 我有 SQLPlus 版本,该版本已添加到 Oracle 10g 安装中。它在多台计算机(无论是 win7 还是 xp)上都会出现这样的错误。我运行 SQLPlus,然后通过@script.sql 调用具有上述内容的脚本。也许我的版本有问题?
  • 它在我的 Sql*plus 中也能正常工作。
  • 当我尝试在 sqlplus 中打印超过 255 个字符时,我在 oracle 8i 中遇到了同样的错误

标签: oracle plsql sqlplus


【解决方案1】:

您正在针对 Oracle 10g 数据库使用早于 Oracle 10g 的 Oracle 客户端

请在下面找到来自 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

【讨论】:

    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多