ORA-06502: PL/SQL: numeric or value error错误解决
作者:admin 日期:2012-09-13
在做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#获取多个值.呵呵.
一点积累,与大家分享,欢迎指正.
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
发表评论