ORA-06502: PL/SQL: numeric or value error错误解决

在做EBS的OM导入获取返回值的时候,报了这个错

orA-06502: PL/SQL: numeric or value error: character string buffer too small


不是费了一点时间,走了一点弯路的.


环境:vs2010 oracle 10G

功能:C# 后台调用oracle ebs请求,在package里面提交request,希望返回两个参数值,

存储过程如下定义:


  Procedure RUNOMIMPORTREQUEST(retcode out number, retmessage out varchar2);

可以看到我要获取两个值.

在c#中获取返回值


public string RUNIMPORTREQUEST()
        {

            oracleParameter[] parameters =
            {

                 new oracleParameter("retcode",OracleType.Number,20),
                 new oracleParameter("retmessage",OracleType.VarChar,240)
            };


            parameters[0].Direction = ParameterDirection.Output;

            parameters[1].Direction = ParameterDirection.Output;

            try
            {

                oracleHelper.ExecuteNonQuery(OracleHelper.ConnectionStringProfile, CommandType.StoredProcedure, "DEZAICN_OM_TEMP_PKG.RUNOMIMPORTREQUEST", parameters);

                string retcode = parameters[0].Value.ToString();

                string retval = parameters[1].Value.ToString();

                return retcode+retval;
  
            
            }
            catch (Exception ee)
            {
                throw ee;
            }
            finally
            {

            }
        }


起初老是误认为数据类型长度不够的原因,结果将  new oracleParameter("retmessage",OracleType.VarChar,240) 中的 240 改成 -1 ,则会报"值太长,无法绑定"的错误;

再检查一下oracle procedure里面的变量值,是否有超过长度,发现将要输出的值作了截断处理,仍是报同样的
orA-19011错误.



最后在一个不起眼的地方,发现了问题




这个问题给我的收获是:既然oracle 的 procedure可以输出多个值,也就可以通过c#获取多个值.呵呵.

一点积累,与大家分享,欢迎指正.


[本日志由 admin 于 2012-09-13 01:35 PM 更新]
上一篇: Oracle EBS:订单导入 OE_Order_PVT 过程 Lines 中出现错误 orA-0
下一篇: Oracle EBS:自动创建发货
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: ORA-19011 Character string buffer too small
相关日志:
评论: 0 | 引用: 0 | 查看次数: 14960
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 30 字 | UBB代码 关闭 | [img]标签 关闭