【问题标题】:ORA-06502: PL/SQL: numeric or value error: character string buffer too small in while execute immediateORA-06502: PL/SQL: 数字或值错误: 字符串缓冲区太小而立即执行
【发布时间】:2015-02-05 11:52:22
【问题描述】:

我们有一个 11.2.0.3 的数据库,我正在尝试执行该过程,它在涉及到行时抛出错误 ORA-06502: PL/SQL: numeric or value error: character string buffer too small

Execute immediate var1||var2||var3||var4;

这里所有的变量都被声明为 long 数据类型和大小变化如下。

大小:200,300,30200,20100 字节

可能是什么问题。这个错误的原因可能是什么。我看到很多通用错误。所以很困惑。

谢谢 什叶斯M

【问题讨论】:

    标签: linux oracle oracle11g


    【解决方案1】:

    也许 Oracle 尝试连接 VARCHAR 数据类型,因为 var1 只有 200 个字节,因此被视为 VARCHAR 而不是 CLOB。

    也许这个可行:

    Execute immediate TO_CLOB(var1)||TO_CLOB(var2)||TO_CLOB(var3)||TO_CLOB(var4);
    

    另一个问题可能是您的字符串本身。可以输出字符串手动执行吗?

    【讨论】:

    • 如果我输出字符串并手动执行,它工作正常。所有变量都使用 LONG 数据类型声明。我是否需要将其更改为 CLOB.会有帮助吗!
    • 快速回答:永远不要使用 LONG 数据类型,它已被弃用多年。
    猜你喜欢
    • 2013-09-14
    • 2011-03-31
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2015-05-16
    • 2018-03-16
    • 2017-04-24
    相关资源
    最近更新 更多