Linux ORA-06502:PL/SQL:数字或值错误:立即执行时字符串缓冲区太小

Linux ORA-06502:PL/SQL:数字或值错误:立即执行时字符串缓冲区太小,linux,oracle,oracle11g,Linux,Oracle,Oracle11g,我们有一个11.2.0.3数据库,我正在尝试执行这个过程,它抛出了一个错误ORA-06502:PL/SQL:numeric或value错误:字符串缓冲区太小 Execute immediate var1||var2||var3||var4; 这里所有变量都声明为long数据类型和大小,如下所示 大小:2003003020020100字节 可能是什么问题。这一错误的原因可能是什么。我看到了很多一般性的错误,所以很困惑 谢谢 SHIYAS M可能Oracle试图连接VARCHAR数据类型,因为va

我们有一个11.2.0.3数据库,我正在尝试执行这个过程,它抛出了一个错误
ORA-06502:PL/SQL:numeric或value错误:字符串缓冲区太小

Execute immediate var1||var2||var3||var4;
这里所有变量都声明为long数据类型和大小,如下所示

大小:2003003020020100字节

可能是什么问题。这一错误的原因可能是什么。我看到了很多一般性的错误,所以很困惑

谢谢
SHIYAS M

可能Oracle试图连接VARCHAR数据类型,因为
var1
只有200字节,因此被认为是VARCHAR而不是CLOB

也许这一个有用:

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

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

如果我输出字符串并手动执行,则工作正常。所有变量都是用长数据类型声明的。我需要把它改成CLOB吗。那会有帮助的!快速回答:永远不要使用长数据类型,它已被弃用多年。