异常 外围系统调用本系统 参数不正常引起的问题 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