关于ODP.NET获得存储过程传出varchar2类型出现ORA-06502: PL/SQL: numeric or value error的问题

错误:ORA-06502: PL/SQL: numeric or value error: character string buffer too small

原因:

1. 较旧版本的ORACLE 11曾存在过存储过程的输出参数varchar2类型时出现过;

   解决办法:升级ORACLE。现在这种问题应该很少遇到。

2.调用方没有指定此输出参数varchar2类型的大小,或者少于存储过程传出的大小;

   解决办法:增加传出参数的大小

3.是ODP.NET参数定义上,程序员疏忽导致。

   解决办法:请认真看参数的构造函数或者oracleCommand.Parameters.Add的重载方法。

   正确的写法如下:

//注意200是Size,null是value
command.Parameters.Add("PS_MSG", OracleDbType.Varchar2, 200, null, ParameterDirection.Output);


   若仍有问题,可使用空参数的OracleParameter构造函数,然后分别指定属性,如下:  

var param = new OracleParameter();
param.ParameterName = "PS_MSG";
param.Direction = ParameterDirection.Output;
param.OracleDbType = OracleDbType.Varchar2;
//param.DbType = DbType.String;
param.Size = 200;
command.Parameters.Add(param);



  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值