异常 外围系统调用本系统 参数不正常引起的问题 ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小

异常 外围系统调用本系统 参数不正常引起的问题 ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小


外围报盘程序 .net 调用

传递的参数 varchar2  100


存储过程

procedure p400106
(
 o_cursor        out types.ref_cursor,  --返回的查询结果
 o_status        out INTEGER,           --状态标志:-1,0
 o_retmsg        out VARCHAR2,          --返回信息
  v_scust_no       in varchar2 ,         --客户号char  [11]


当过程返回的错误信息变量被 赋值 > 100 的字符后 就出错了.... 比较隐晦.

由外围系统调用产生的错误.










外部系统(别人的程序 ) 调用存储过程  
我对输入参数要求 是 1,2  别人确输入了4  而且错误隐晦


  if var ==1  ...
  if var ==2 
  else rasie  excption 



if ( var  not  in ( '1' , '2') ){
   var :=2 ;  // 设定默认值
}
?
建议
 1. 要么使用异常 对输入的value 进行排查.报错输出

2  要么是统一过滤 如果不是 1,2  那么我强制设定一个默认值
必须在是 那个 ....

 但是交易中买卖方向是 B S 以外的那么怎么半呢 ?? 这类问题通常调试阶段很容易查处来的.... 建议用报错的方式 提示..........
虽然默认值的方式 稳定性更好.........
但是交易方式的问题不容 丝毫差错 ............


使用别人的数据库
小数点 进度 进入到我们的数据库
别人数据库的 没处理好


成交回报写入数据库错误,数据库错误信息:code:msg:error:ORA-06502: PL/SQL: 数字或值错误 :  字符串缓冲区太小
ORA-06512: 在 "ITMP.IDMP_STOCK", line 978
ORA-06502: PL/SQL: 数字或值错误 :  字符串缓冲区太小
ORA-06512: 在 "ITMP.IDMP_MARKET", line 1479
ORA-06510: PL/SQL: 用户定义的异常错误未得到处理
ORA-06510: PL/SQL: 用户定义的异常错误未得到处理
ORA-06512: 在 line 1

System.Data.OracleClient
   在 System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
   在 System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
   在 System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, OciRowidDescriptor& rowidDescriptor)
   在 System.Data.OracleClient.OracleCommand.ExecuteNonQuery()
   在 fundoffer.DatabaseProcess.sp5106(String custno, String stkcode, String entsys, String cjno, Int32 entnum, Single cjamt, Single cjprice, String cjdate, String cjtime, String bstp, String kptp, String exchgcode, String seatno, String exchgcustno, String& retcode, String& retmsg) 位置 E:\ 接口调试\seat_new_fundoffer\fundoffer\DatabaseProcess.cs:行号 787
   在 fundoffer.HolderCjhb.QBWriterDB() 位置 E:\ 接口调试\seat_new_fundoffer\fundoffer\HolderCjhb.cs:行号 426


 

你可能感兴趣的:(异常 外围系统调用本系统 参数不正常引起的问题 ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小)