C# Oracle numeric or value error: character string buffer too small 注意事项

在调用Oracle存储过程时遇到【ORA-06502: PL/SQL: numeric or value error: character string buffer too small】错误,问题出在参数顺序不匹配。调整C#代码中参数添加顺序以匹配存储过程定义,错误解决。提示开发者在调用第三方存储过程时,应确保参数顺序正确。
摘要由CSDN通过智能技术生成

背景

最近手头上有比较多项目与Oracle相关,并且需要调用一些Oracle的自定义方法和函数, 最近接触的一个存储过程,无论怎么调用都会出现 【ORA-06502: PL/SQL: numeric or value error: character string buffer too small】 的错误, 而且这个存储过程并非我司同事编写,非常不好调试,最后发现是参数顺序问题, 调整为完全与存储过程定义一致之后,问题解决。

详细描述

这个storeproc大概是这个样子的

     sp_demo(O_ERROR_MESSAGE, O_ERROR_CODE, I_DC_CODE, I_STORE_CODE, I_ADJ_NO) ;

返回的是一个NUMBER类型。 (原来是BOOLEAN,但是众所周知.NET 与ORACLE 的BOOLEAN类型实在有点不太对付, 所以改成了NUMBER).
参数大概是这样子的

O_ERROR_MESSAGE INOUT VARCHAR2(4000)
O_ERROR_CODE INOUT NUMBER(10)
I_DC_CODE IN VARCHAR2(10)
I_STORE_CODE IN VARCHAR2(20)
I_ADJ_NO IN NUMBER(10)

而我的C# Code 大概是这样子

OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "sp_demo";
cmd.CommandType = CommandType.StoredProcedure;
OracleParameter p1 = new 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值