日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
DB2中游標(biāo)使用的問(wèn)題解析

在使用DB2數(shù)據(jù)庫(kù)中的游標(biāo)時(shí),您可能會(huì)有這些問(wèn)題:如果對(duì)一個(gè)表設(shè)置了游標(biāo),可不可以同時(shí)對(duì)這個(gè)表進(jìn)行update操作? 怎么樣操作才不會(huì)影響游標(biāo)的位置? 本文將為您講解處理的方法,供您參考。

創(chuàng)新互聯(lián)憑借專業(yè)的設(shè)計(jì)團(tuán)隊(duì)扎實(shí)的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識(shí)和豐厚的資源優(yōu)勢(shì),提供專業(yè)的網(wǎng)站策劃、網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)站優(yōu)化、軟件開(kāi)發(fā)、網(wǎng)站改版等服務(wù),在成都十載的網(wǎng)站建設(shè)設(shè)計(jì)經(jīng)驗(yàn),為成都上1000+中小型企業(yè)策劃設(shè)計(jì)了網(wǎng)站。

使用定位操作更改行

可更新游標(biāo)支持通過(guò)游標(biāo)更新行的數(shù)據(jù)修改語(yǔ)句。當(dāng)定位在可更新游標(biāo)中的某行上時(shí),您可以執(zhí)行更新或刪除操作,這些操作針對(duì)用于在游標(biāo)中建立當(dāng)前行的基表行。 
   這些就稱為定位更新。 
 
定位更新在打開(kāi)游標(biāo)的同一個(gè)連接上執(zhí)行。 
   這就允許數(shù)據(jù)修改共享與游標(biāo)相同的事務(wù)空間,并且使游標(biāo)保持的鎖不會(huì)阻止更新。 
 
有兩種方法在游標(biāo)中執(zhí)行定位更新:   
   UPDATE  或  DELETE  語(yǔ)句中的  Transact-SQL  WHERE  CURRENT  OF  子句。 
   數(shù)據(jù)庫(kù)  API  定位更新函數(shù)或方法,如  ODBC  SQLSetPos  函數(shù)。 
 
使用  Transact-SQL  執(zhí)行定位更新 
   Transact-SQL  WHERE  CURRENT  OF  子句典型用于  Transact-SQL  存儲(chǔ)過(guò)程、觸發(fā)器以及腳本 
 (當(dāng)需要根據(jù)游標(biāo)中特定行進(jìn)行修改時(shí))。存儲(chǔ)過(guò)程、觸發(fā)器、或腳本將: 
   DECLARE  和  OPEN  游標(biāo)。 
   用  FETCH  語(yǔ)句在游標(biāo)中定位于一行。 
   用  WHERE  CURRENT  OF  子句執(zhí)行  UPDATE  或  DELETE  語(yǔ)句。用  DECLARE  語(yǔ)句中的  cursor_name   
   作為  WHERE  CURRENT  OF  子句中的  cursor_name。   
例程: 
declare    cursor_name    cursor    for      #p#
select    *    from    T2 
for  update     
open    cursor_name     
fetch    next    from    cursor_name     
while  @@Fetch_Status  =  0   
begin 
update    T2  set  sname  =  'lx_'  +  sname  --right(sname,len(sname)-3)   
where    current    of    cursor_name     
fetch    next    from    cursor_name     
end 
close  cursor_name 
deallocate  Cursor_Name

在DB2中也有類(lèi)似的用法,由于DB2中的SQL語(yǔ)法和SQL SERVER有所不同,所以DB下的存儲(chǔ)過(guò)程如下:
CREATE PROCEDURE KYJT.SP_TESTT ( )
  SPECIFIC KYJT.SQL060421171925193
  LANGUAGE SQL
  NOT DETERMINISTIC
  CALLED ON NULL INPUT
  MODIFIES SQL DATA
  INHERIT SPECIAL REGISTERS
BEGIN
DECLARE   PNAME VARCHAR(50);
DECLARE PID INT;
DECLARE   v_count int;
DECLARE   SQLSTATE   CHAR(5);    
DECLARE   at_end   INT   DEFAULT   0;   #p#
DECLARE not_found CONDITION FOR SQLSTATE '02000';

DECLARE C1 CURSOR FOR SELECT ID,NAME FROM KYJT.TESTT FOR UPDATE ;
DECLARE   CONTINUE   HANDLER   FOR   not_found  
SET   at_end   =   1;    
 OPEN C1;
 INS_LOOP:     
 LOOP
FETCH C1 INTO PID,PNAME; 
if at_end = 1 then
LEAVE INS_LOOP;
END IF;
UPDATE KYJT.TESTT A
SET NAME = (SELECT NAME FROM KYJT.TEST B WHERE B.ID=PID) WHERE CURRENT OF C1;
END LOOP;
 CLOSE C1;
END


當(dāng)前文章:DB2中游標(biāo)使用的問(wèn)題解析
分享地址:http://www.dlmjj.cn/article/dpiiedc.html