-1

ORA-6502 Character string buffer too small在下面的语句中,我的代码中出现 Oracle 错误

EXECUTE IMMEDIATE 'BEGIN :project_id :=   
               Activity_API.Get_Project_Id(:activity_seq); END;'
USING OUT project_id_, activity_seq_

project_id_- 这是函数中的局部变量
activity_seq_- 这是函数的 IN 参数。

我不明白错误的原因。此外,错误并没有始终如一地出现。

请帮助我知道我错过了什么。谢谢。

4

1 回答 1

1

通常,此错误意味着您的代码中某处有一个 VARCHAR(N) 变量,并且您尝试为其分配 VARCHAR(N+x) 值。它可能发生在任何地方,比如:

  • activity_seq_ 的大小对于函数局部变量来说太大了
  • project_id_ 的大小对于函数结果来说太小了
  • 函数本身使用了一些过大的值
  • 等等

有时它可能是由于使用了多字节字符集而发生的,例如,如果 value 是 VARCHAR(N chars) 而分配目标是 VARCHAR(n bytes)。无论如何,你应该调试它。使用 PL/SQL Developer 或任何其他可以逐行跟踪存储过程的工具,在测试窗口中运行您的语句并查看发生了什么、发生在哪里以及为什么发生。

于 2015-01-29T16:32:34.513 回答