自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DB2中可以讀寫的游標(biāo)的定義

數(shù)據(jù)庫(kù)
DB2數(shù)據(jù)庫(kù)是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),是一種應(yīng)用很普遍的數(shù)據(jù)庫(kù),游標(biāo)是系統(tǒng)為用戶開設(shè)的一個(gè)數(shù)據(jù)緩沖區(qū),存放SQL語(yǔ)句的執(zhí)行結(jié)果。本文中將為大家?guī)?lái)DB2中可以讀寫的游標(biāo)的定義,供大家參考學(xué)習(xí)。

導(dǎo)讀:DB2中游標(biāo)是非常重要的一個(gè)概念,游標(biāo)提供了一種對(duì)從表中檢索出的數(shù)據(jù)進(jìn)行操作的靈活手段,就本質(zhì)而言,游標(biāo)實(shí)際上是一種能從包括多條數(shù)據(jù)記錄的結(jié)果集中每次提取一條記錄的機(jī)制。

使用定位操作更改行
可更新游標(biāo)支持通過(guò)游標(biāo)更新行的數(shù)據(jù)修改語(yǔ)句。當(dāng)定位在可更新游標(biāo)中的某行上時(shí),您可以執(zhí)行更 新或刪除操作,這些操作針對(duì)用于在游標(biāo)中建立當(dāng)前行的基表行。 這些就稱為定位更新。 定位更新在打開游標(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
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中也有類似的用法,由于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;
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

【編輯推薦】

  1. 在DB2數(shù)據(jù)庫(kù)中很難理解的單詞catalog
  2. 深入講解游標(biāo)類型為什么會(huì)產(chǎn)生數(shù)據(jù)檢索
  3. 游標(biāo)腳本性能問(wèn)題詳解之游標(biāo)分類特點(diǎn)篇
  4. 游標(biāo)為何物,請(qǐng)你看這里
責(zé)任編輯:迎迎 來(lái)源: 博客園
相關(guān)推薦

2010-09-01 15:09:41

DB2動(dòng)態(tài)游標(biāo)

2010-08-13 13:40:47

DB2編程序

2010-09-01 15:15:20

DB2動(dòng)態(tài)游標(biāo)

2010-08-05 14:24:37

DB2存儲(chǔ)過(guò)程

2010-11-04 10:32:18

DB2游標(biāo)原理

2010-09-30 13:27:09

DB2游標(biāo)

2010-08-31 15:03:28

DB2游標(biāo)

2010-08-31 14:33:46

DB2游標(biāo)

2010-08-03 12:58:29

DB2游標(biāo)循環(huán)

2010-11-02 14:37:58

DB2臨時(shí)表定義

2022-05-11 15:06:02

MySQL游標(biāo)SQL

2010-08-31 16:13:40

DB2SQL函數(shù)

2010-09-01 11:39:17

DB2聚集目標(biāo)表

2010-08-31 15:08:14

DB2INSERT優(yōu)化

2013-01-18 10:44:30

IBMdW

2010-09-01 09:40:33

DB2函數(shù)OLAP

2010-09-01 14:46:16

DB2表空間

2010-09-01 11:25:08

DB2加密

2010-08-26 11:37:38

DB2命令

2009-12-16 10:43:52

安裝db2
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)