DB2 not found異常的解決方法
DB2 not found異常問題的確讓我們非常頭疼,下面就為您分析其中的原因,并給出了兩種解決方法,希望對您能夠有所幫助。
什么時(shí)候才會發(fā)生DB2 not found異常 ,以及db2中sqlcode的值是如何變化的?
在db2中,一條select 語句也有可能發(fā)生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;
如果此時(shí)沒有檢索到記錄,那么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
--注如果發(fā)生not found那么此時(shí)的sqlcode必定為100
- set sql_code=sqlcode;/*在這里sqlcode的值為100;*/
- --如果再次得到sqlcode的值那么它的值變?yōu)?
- set sql_code=sqlcode;/*這里sqlcode變成了0,因?yàn)樯弦粭l語句執(zhí)行成功了,那么sqlcode變成了0*/
- end;
- select app_class_code into classCode from kf_app_class where app_name='無效記錄';
- set sql_code=sqlcode;/*同理此時(shí)如果沒有取到數(shù)據(jù),那么會進(jìn)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;
【編輯推薦】