You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

直接调用正常,跨Schema调用COMMON.GetGHSInformation()抛ORA-06502错误

问题分析:跨Schema调用存储过程触发ORA-06502错误

核心原因

ORA-06502本质是字符串拼接后的总长度超过了输出变量的最大允许长度,问题根源在P_OUTPUTTEXT参数的长度定义上:

  • 存储过程中P_OUTPUTTEXT声明为IN OUT VARCHAR2但未指定长度,Oracle PL/SQL中这种未指定长度的参数,实际可用长度由调用方传入的变量长度决定。
  • 直接调用时,你大概率传入了长度足够的变量(比如测试PL/SQL块中声明的VARCHAR2(32767)类型变量),拼接后的GHS文本总长度未超出上限,因此运行正常。
  • 当OtherSchema.DoSomethingGHSRelated()调用时,该过程中传入的P_OUTPUTTEXT对应变量长度不足(比如被声明为VARCHAR2(1000)甚至更短),多个GHS文本拼接后总长度超过限制,就触发了ORA-06502错误。

验证与修复建议

  1. 检查调用方变量:查看OtherSchema.DoSomethingGHSRelated()中传入GetGHSInformation的P_OUTPUTTEXT变量声明,确认其长度是否足够容纳所有GHS文本的拼接结果。
  2. 修改存储过程参数:将COMMON.GetGHSInformation()中的P_OUTPUTTEXT明确指定足够大的长度,比如:
    P_OUTPUTTEXT IN OUT VARCHAR2(32767)
    
    这样无论调用方传入的变量长度如何,存储过程内部都能使用PL/SQL允许的最大VARCHAR2长度(32767字节)处理拼接。

内容的提问来源于stack exchange,提问作者kbd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:37:34