總結剛結束的機房合作只有一種感覺那就是:好多好多東西自己都不會,又有好多東西在這次合作中學到了,總之就是痛并快樂著! 接下來就談談在退卡時調用存儲過程PROC_ReturnCard時出現錯誤及解決過程。圖如下: 剛開始的時候就考慮到D層的參數是不是寫的過多
總結剛結束的機房合作只有一種感覺那就是:“好多好多東西自己都不會,又有好多東西在這次合作中學到了,總之就是痛并快樂著!”
接下來就談談在退卡時調用存儲過程PROC_ReturnCard時出現錯誤及解決過程。圖如下:
剛開始的時候就考慮到D層的參數是不是寫的過多了,于是在數據庫中查幾遍參數都一樣啊!為什么就是不行呢?于是上網查了下:有以下幾種情況
一、如果你的參數添加是在循環體內完成第2次時就會重復添加,此時觸發參數過多異常
解決方法1,參數在循環體外添加,for內部只賦值和取返回值
解決方法2,每次循環清空參數Parameters.Clear();
二、普通調用
1、存儲過程調用錯了(一般是存儲過程名字字母錯誤)。
2、用戶創建的存儲過程與系統存儲過程同名。如果以sp開頭,用戶創建的存儲過程,總會先檢查master數據庫(即使該存儲過程已用數據庫名稱限定)。 如果用戶創建的存儲過程與系統存儲過程同名,則永遠不執行用戶創建的存儲過程 ,因此自定義存儲過程不要與系統存儲過程同名
3、超過指定的參數。以上情況你的代碼中均沒有出現,目前最大的可能性是你連接的數據庫中存儲過程中的參數確實沒有那么多,而你改的是另一個數據庫中的存儲過程!
4、清空參數Parameters.Clear();
由于我的屬于第二種情況經過以上的排查感覺,第一種存儲過程名稱寫錯絕對不可能(自我感覺良好)第二種也排除,因為我嚴格按命名規范來的。第三種情況已經查過好多次數據庫了沒錯啊!因此就開始找第四中的解決辦法,結果還是不行。只好找人幫忙他在程序運行時,突然發現我調用的存儲過程的名字不對,這時我立刻暈死!明明是PROC_ReturnOut 而我卻寫成了PROC_SelectCheckOut這么低級的錯誤,竟然讓我忙活了一下午。更不可原諒的是自己就沒有檢查卻肯定這是對的,沒有驗證就下結論,這定是死罪!
因此通過這個小小的錯誤,必須得做自我反思,今后在做事情的時候千萬不要以“我認為、、、”來下定論。一定要經過實際排查不放過任何細節,不能憑空想象,只有做過了才有資格發表評論。就讓我們以小見大來看待這個問題并做出反思!
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com