久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

DB2中游標(biāo)的使用方法以及存儲(chǔ)過程的寫法

瀏覽:80日期:2023-11-09 17:15:12

問題1:

什么時(shí)候才會(huì)發(fā)生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ù),那么會(huì)進(jìn)declare continue handler ,返回后sqlcode的值也為0*/

end;

所以我們可以通過兩種方法來捕獲和處理not found

方法1:

begin

declare continue handler for not found

begin

--異常處理代碼

end;

sql語句

end;

方法2:

begin

sql語句

if sqlcode=100 then

--異常處理代碼

end if;

end;

問題2:

定義了游標(biāo),怎么fecth一條記錄,怎么進(jìn)行循環(huán)?

Q:定義了游標(biāo)假設(shè)發(fā)生not found 異常,那么是在open cursorName的時(shí)候還是在fecth的時(shí)候發(fā)生異常?

A:檢驗(yàn)游標(biāo)中的數(shù)據(jù)是否取完或者有無記錄,應(yīng)該在fecth的時(shí)候,而不是發(fā)生在open cursorName的時(shí)候,

下面一個(gè)例子詳細(xì)的說明了游標(biāo)使用過程:

begin

declare sqlcode integer default 0;

declare app_code varchar(10);

declare cursor1 cursor for select app_code from kf_app_class ;

open cursor1;

cursorLoop:

loop

fecth cursor1 into app_code ;

if sqlcode=100 then leave cursorLoop;

end if;

end loop;

end;

sqlcode 可以直接用嗎?

A:在db2中,如果要使用sqlcode那么必須在使用前declare;

譬如

declare sqlcode integer default 0;

if sqlcode =? then

end if;

附注

db2的其他異常處理

對(duì)應(yīng) oracle的 when other exceptions

declare exit handler for sqlwaring,sqlexcption

begin

--處理異常

end;

當(dāng)程序執(zhí)行exit handler異常處理后,那么會(huì)退出程序,不會(huì)在接著執(zhí)行,也就是

declare exit handler for sqlwaring,sqlexcption

begin

--處理異常

end;

sql語句1;

sql語句2;

執(zhí)行sql語句1發(fā)生異常,會(huì)進(jìn)入 exit handler ,然后退出程序,不會(huì)在執(zhí)行 sql語句2

標(biāo)簽: DB2 數(shù)據(jù)庫
主站蜘蛛池模板: 国产精品美女久久久久久免费 | 亚洲福利一区二区 | 国产h在线 | 亚洲午夜视频在线观看 | 免费久久久久 | 96自拍视频| 日韩欧美a级v片免费播放 | 日韩中文在线视频 | 亚洲天堂一区二区 | www.国产在线| 精品99免费 | 二区久久 | 久久久www | 日韩一区二区精品 | 91在线看视频 | 最新国产视频 | 97久久精品午夜一区二区 | 日韩伦理一区二区 | 最新日韩视频 | 欧美激情综合五月色丁香小说 | 久久久久久香蕉 | 一区二区三区免费在线观看 | 亚洲网站在线观看 | 欧洲毛片 | 国产亲子乱弄免费视频 | 国产视频一区二区在线 | 亚洲视频在线观看 | 成人99 | av网站免费 | 天天干狠狠干 | 国产精品第一国产精品 | 中文字幕在线观看一区二区三区 | 一区二区三区视频 | 国产在线中文字幕 | 国产精品亚洲天堂 | jizz在线看片 | 中文字幕在线日韩 | 欧美日韩国产精品一区 | 一级电影在线观看 | 成人在线小视频 | 在线第一页 |