外圍報盤程序 .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