日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DB2存储过程使用游标

發布時間:2023/12/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DB2存储过程使用游标 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目前在接觸DB2,在此將DB2中使用游標和if else ,while等收集起來進行匯總。

?

SET SCHEMA = "AUTEK";CREATE PROCEDURE "AUTEK"."SP_ADDRESS" ( OUT "V_MESSAGE" VARCHAR(50) )SPECIFIC "SQL111214105311700"LANGUAGE SQLNOT DETERMINISTICNO EXTERNAL ACTIONMODIFIES SQL DATACALLED ON NULL INPUTINHERIT SPECIAL REGISTERS BEGIN --聲明一些變量declare v_accno varchar(32); declare v_cusid varchar(32); declare v_count int; declare v_count1 int; declare v_addrseqno varchar(10); declare v_modidate varchar(15); declare v_count2 int; declare v_count3 int; select count(distinct cusid) into v_count from tempdaybak2;begindeclare v_cur cursor for select distinct cusid from tempdaybak2 for read only;open v_cur;while(v_count>0) DOFETCH v_cur into v_cusid;--通過cusno客戶號 去從dc_ci_addr_all表中查詢結果集select count(*) into v_count1 from dc_ci_addr_all where cusno=v_cusid;if (v_count1=1) then update tempdaybak2 set address=(select addr1 from dc_ci_addr_all where dc_ci_addr_all.cusno=v_cusid) , mobphone=(select mobphone from dc_ci_addr_all where dc_ci_addr_all.cusno=v_cusid), post=(select postcode from dc_ci_addr_all where dc_ci_addr_all.cusno=v_cusid) where cusid=v_cusid; else select min(addrseqno) into v_addrseqno from dc_ci_addr_all where cusno=v_cusid;select count(*) into v_count2 from dc_ci_addr_all where cusno=v_cusid and addrseqno=v_addrseqno;if(v_count2=1) thenupdate tempdaybak2 set address=(select addr1 from dc_ci_addr_all where dc_ci_addr_all.cusno=v_cusid and dc_ci_addr_all.addrseqno=v_addrseqno) , mobphone=(select mobphone from dc_ci_addr_all where dc_ci_addr_all.cusno=v_cusid and dc_ci_addr_all.addrseqno=v_addrseqno), post=(select postcode from dc_ci_addr_all where dc_ci_addr_all.cusno=v_cusid and dc_ci_addr_all.addrseqno=v_addrseqno) where cusid=v_cusid; elseselect max(modidate) into v_modidate from dc_ci_addr_all where cusno=v_cusid and addrseqno=v_addrseqno;select count(*) into v_count3 from dc_ci_addr_all where cusno=v_cusid and addrseqno=v_addrseqno and modidate=v_modidate;if(v_count3=1)thenupdate tempdaybak2 set address=(select addr1 from dc_ci_addr_all where dc_ci_addr_all.cusno=v_cusid and dc_ci_addr_all.addrseqno=v_addrseqno and modidate=v_modidate) , mobphone=(select mobphone from dc_ci_addr_all where dc_ci_addr_all.cusno=v_cusid and dc_ci_addr_all.addrseqno=v_addrseqno and modidate=v_modidate), post=(select postcode from dc_ci_addr_all where dc_ci_addr_all.cusno=v_cusid and dc_ci_addr_all.addrseqno=v_addrseqno and modidate=v_modidate) where cusid=v_cusid; else--取最后一個update tempdaybak2 set address=(select addr1 from dc_ci_addr_all where dc_ci_addr_all.cusno=v_cusid and dc_ci_addr_all.addrseqno=v_addrseqno and modidate=v_modidate order by autoid desc fetch first 1 rows only),mobphone=(select mobphone from dc_ci_addr_all where dc_ci_addr_all.cusno=v_cusid and dc_ci_addr_all.addrseqno=v_addrseqno and modidate=v_modidate),post=(select postcode from dc_ci_addr_all where dc_ci_addr_all.cusno=v_cusid and dc_ci_addr_all.addrseqno=v_addrseqno and modidate=v_modidate) where cusid=v_cusid; end if;end if;end if;set v_count=v_count-1;end while;end; END;GRANT EXECUTE ON PROCEDURE "AUTEK"."SP_ADDRESS"( VARCHAR(50) ) TO USER "AUTEK" WITH GRANT OPTION;


總結

以上是生活随笔為你收集整理的DB2存储过程使用游标的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。