【正文】
ALTER MODULE myMod DROP PROCEDURE myProc。 19 主要內(nèi)容: 存儲(chǔ)過程介紹 存儲(chǔ)過程基礎(chǔ)結(jié)構(gòu) 控制語句 游標(biāo)和結(jié)果集 異常處理器 編寫和調(diào)試存儲(chǔ)過程 20 IF語句 格式: IF 條件 1 THEN statement1。 ELSE statement3。 注 :條件成立時(shí)為 TRUE (真 ),不成立時(shí)為 FALSE(假 ) 和 NULL 21 IF語句例子 IF rating = 1 THEN UPDATE EMPLOYEE SET salary = salary* WHERE empno = i_num。 ELSE UPDATE EMPLOYEE SET salary = salary* WHERE empno = i_num。 22 CASE語句( 1 of 2) ?簡(jiǎn)單 CASE語句 23 CASE語句( 2 of 2) ?稍加變形的 CASE語句 24 LOOP語句 ?語法 [LABEL] LOOP SQLprocedurestatements。 ?示例 fetch_loop: LOOP FETCH c1 INTO v_firstname, v_lastname。 IF counter = 51 THEN LEAVE fetch_loop。 END LOOP fetch_loop。 END FOR [LABEL]。 FOR v1 AS c1 CURSOR FOR SELECT firstnme, midinit, lastname FROM employee DO SET fullname=lastname||‘,’||firstnme||’,’||midinit。 END FOR。 UNTIL SQLCODE 0 AND REPEAT ftch_loop2。 IF SQLCODE = 100 THEN SET at_end = 1。 END WHILE。 IF at_end = 1 THEN LEAVE FETCH_LOOP1。 END IF。 END LOOP FETCH_LOOP1。例如: IF v_DEPT = ‘D11’ GOTO bye。 IF v_DEPT = ‘D11’ RETURN 1。 2. ( DECLARE關(guān)鍵字, cl游標(biāo)名稱, CURSOR是必須有的,;指通過 c1的游標(biāo)來操作 staff里所有的數(shù)據(jù))最常用的最普通的。 4. c1 CURSOR WITH RETURN TO CALLER FOR select * form staff。 32 游標(biāo)的相關(guān)操作 ?打開游標(biāo) OPEN 游標(biāo)名 ?提取游標(biāo) FETCH 游標(biāo)名 INTO 變量列表 ?關(guān)閉游標(biāo) CLOSE 游標(biāo)名 33 游標(biāo)的遍歷 DECLARE at_end INT DEFAULT 0。 DECLARE PINT INTEGER DEFAULT 0。0202339。 ( 聲明了一個(gè)游標(biāo),把 IID的指標(biāo)拿出來) DECLARE CONTINUE HANDLER FOR not_found SET at_end = 1。 (進(jìn)行循環(huán)) SET PCOUNT = 0。 IF at_end 0 THEN LEAVE ins_loop。 SET PCOUNT = PCOUNT + 1。 34 刪除游標(biāo)對(duì)應(yīng)的數(shù)據(jù)行 DECLARE cursor1 CURSOR FOR SELECT DEPTNO, DEPTNAME, LOCATION FROM FOR UPDATE。(打開游標(biāo)) FETCH FROM cursor1 INTO v_DEPTNO, V_DEPTNAME, v_LOCATION。( 刪除 ; CURRENT OF cursor1這是的游標(biāo)是指向某一個(gè)位置;刪除游標(biāo)指向的當(dāng)前行。( 關(guān)閉游標(biāo),也可做一個(gè)循環(huán),刪除所有的內(nèi)容 ) 35 更新游標(biāo)對(duì)應(yīng)的數(shù)據(jù)行 DECLARE cursor1 CURSOR FOR SELECT DEPTNO, DEPTNAME, LOCATION FROM FOR UPDATE。 FETCH FROM cursor1 INTO v_DEPTNO, v_DEPTNAME, v_LOCATION。 CLOSE cursor1。 (語法結(jié)構(gòu))(異常處理器是需要預(yù)先聲明的) 39 異常處理器的類型( handlertype) 異常處理器的類型有如下幾種: ?CONTINUE( 繼續(xù) ) ? 在異常處理器操作完成之后,會(huì)繼續(xù)執(zhí)行產(chǎn)生這個(gè)異常語句之后的下一條語句。 ?UNDO( 撤銷所做的記錄,退出整個(gè)程序 ) ? 在異常處理器操作執(zhí)行之前, DB2會(huì)回滾存儲(chǔ)過程中執(zhí)行的 SQL操作。 40 異常處理器和 SQLSTATE 異常處理器可以處理基于特定 SQLSTATE值的定制異常,或者處理預(yù)定義異常的類。這個(gè)異常通常在 SELECT沒有返回行的時(shí)候出現(xiàn)。 ?SQLWARNING