DB2 not found異常問題的確讓我們非常頭疼,下面就為您分析其中的原因,並給出了兩種解決方法,希望對您能夠有所幫助。
什麼時候才會發生DB2 not found異常 ,以及db2中sqlcode的值是如何變化的?
在db2中,一條select 語句也有可能發生not found異常,譬如
- declare sqlcode integer default 0;
- declare sql_code integer default 0;
- declare classCode varchar(40) ;
- select app_class_code into classCode from kf_app_class where app_name='無效記錄';
- set sql_code=sqlcode;
如果此時沒有檢索到記錄,那麼sqlcode的值為100,有的話為0;
我們可以定義NOT FOUND 異常處理
- declare sqlcode integer default 0;
- declare sql_code integer default 0;
- declare classCode varchar(40) ;
- begin
- declare continue handler for not found
- begin
--注如果發生not found那麼此時的sqlcode必定為100
- set sql_code=sqlcode;/*在這裡sqlcode的值為100;*/
- --如果再次得到sqlcode的值那麼它的值變為0
- set sql_code=sqlcode;/*這裡sqlcode變成了0,因為上一條語句執行成功了,那麼sqlcode變成了0*/
- end;
- select app_class_code into classCode from kf_app_class where app_name='無效記錄';
- set sql_code=sqlcode;/*同理此時如果沒有取到數據,那麼會進declare continue handler ,返回後sqlcode的值也為0*/
- end;
所以我們可以通過兩種方法來捕獲和處理not found
DB2 not found異常的解決方法1:
- begin
- declare continue handler for not found
- begin
- --異常處理代碼
- end;
- sql語句
- end;
DB2 not found異常的解決方法2:
- begin
- sql語句
- if sqlcode=100 then
- --異常處理代碼
- end if;
- end;