歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Spring StoredProcedure調用Oracle函數各種異常解決方法

其實也不是各種異常解決方法,只是出現了太多的異常我實在不知道有哪些,下面列舉一下吧:

1.PLS-00306: wrong number or types of arguments in call to 'QUERYUSER'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

原因:這個問題是少參數,或者類型不對,我的原因是函數的返回值沒有接收,也就是沒有設置函數返回值的參數;

解決方法:加上個asp.addOutParameter("n_Result", Types.INTEGER);// 函數返回結果,就可以解決。

 

2.ORA-00604: error occurred at recursive SQL level 1
ORA-01003: no statement parsed

原因:這個問題是因為添加參數的順序問題,我把接收返回值的參數放在了輸出參數的前面,就出現了這樣的異常,原因包你找死找不出來,

解決方法:將接收返回值參數的代碼添加到所有參數的最前面就可以了

 

還有其他的問題其實也都是對於調用函數時的設置參數順序的問題 各種不同順序出現的一場可能不一樣,而且這種異常你上網都找不出解決方案,現在總結下Spring StoredProcedure調用Oracle函數的參數設置順序:

1.接收函數返回值的代碼必須寫在最前面

2.然後接下來就輸入參數和輸出參數,這個順序必須和函數定義的參數順序一致才行,不然又是各種不認識的異常

3.最好把輸出參數寫在最後面,當時第二點說了,順序要和函數定義的參數順序一致,所以建議函數定義的時候輸出寫在輸入後面,我沒嘗試函數定義時輸出寫在輸入前面,然後代碼也同樣順序會不會出問題,有興趣的自己嘗試吧,我懶了。

當然當你遇到這些問題的時候這只是個參考,不能確保能解決你得問題,我只是把我遇到的問題記錄下來,總之我是這樣解決的,所以解決不了也不要來罵我啊

最後說一句Spring能不能智能點 這種坑爹的問題都能出 太傷人了 設置參數的時候不是給了參數名嗎 干嘛還要這麼糾結參數順序啊 而且也沒有哪裡提到過

Copyright © Linux教程網 All Rights Reserved