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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

DB2 9 使用拓荒(733 检讨)认证指南,第 2 部分: DB2 数据操作(6)

發(fā)布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DB2 9 使用拓荒(733 检讨)认证指南,第 2 部分: DB2 数据操作(6) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習根柢根底觀觀點









操作游標

游標措置概述

在本節(jié)中,您將更進一步看到若安在嵌入式 SQL 使用次第中運用游標。異常,根柢根底的步驟照舊是聲明、翻開、獲取、更新/刪除(可選)和封閉。

為了贊助看法游標的觀觀點,假定 DB2 構建一個了局表來寄存經過議定 SELECT 語句檢索到的全數行。游標經過議定標識或指向表中的當前行,使使用次第可以會見了局表中的行。當運用游標時,使用次第可以繼續(xù)地從了局表中檢索每一行,直到碰到 end-of-data 條件(也即是 NOT FOUND 條件、SQLCODE 100SQLSTATE 02000)。取決于滿足搜刮條件的行的數目,嘗試 SELECT 語句失失落的了局集概略包括 0 行、1 行或更多的行。

在嵌入式 SQL 中聲明游標

DECLARE CURSOR 語句的語法很是簡樸。上面是靜態(tài) SQL 的一個例子:

DECLARE C1 CURSOR FOR SELECT * FROM STAFF


這條語句的運用概略有點令人隱晦,因為這條語句不是可嘗試的。換句話說,這條語句是在嵌入式使用次第的預備階段措置的,在次第嘗試時代,當碰到 DECLARE 語句時,不會發(fā)生任何事件。全數事情都是在游標翻開后完成的。專心的要求即是,在源文件中,DECLARE CURSOR 語句要出現在 OPEN 語句之前。而在異常的 C 函數中,乃至不需求放入如許的語句。在游標聲明時地點的源文件中,每個游標的稱呼必需是專心的。

假設運用靜態(tài) SQL,那么 DECLARE CURSOR 語句會有有所不同。這里不再運用 SELECT 語句的語法,而是運用一個語句名。這個語句名必需與預備相關的 SELECT 語句時指定的稱呼相婚配。比方:

EXEC SQL PREPARE STMT1 FROM :STRINGSTMT;
EXEC SQL DECLARE C3 CURSOR FOR STMT1;







回頁首



在嵌入式 SQL 中翻開游標

經過議定翻開一個游標,可以預備究詰了局會合的行,以供次第運用。open 利用還使游標的職位處所處于第一個了局行之前,不外只要嘗試 fetch 下令時,才氣會見那一行。

每每,open 利用將占去究詰嘗試進程中的年夜部分時間,尤其是在有 ORDER BYGROUP BY 子句的環(huán)境下就更是云云。

OPEN 語句的語法很是簡樸。要翻開一個名為 c0 的游標,可運用以下語句:

OPEN C0







回頁首



在嵌入式 SQL 中獲取游標

對游標嘗試 fetch 將招致了局會合的下一行變成對次第可用,每每是將了局集各列中的值放入到宿主變量中。了局會合的第 n 列的值被放入 fetch 語句中的第 n 個宿主變量中。

比方,假設為 Select name, dept, id from staff 聲明一個游標 c0,那么語句 Fetch c0 into :hv1, :hv2, :hv3 將把 name 列的值放入 hv1,把 dept 列的值放入 hv2,把 id 列的值放入 hv3

假設了局集列可覺無暇,那么應該再運用一個宿主標識符(null 指示符),DB2 將把一個負值存儲在誰人變量中,以暗示前去的是一個 null 值。比方,將之前的例子改為 Fetch c0 into :hv1, :hv2 :hv2ind, :hv3,如許次第就可以曉得員工的部分能否為 null。

每每,會將 fetch 語句放在一個次第輪回中,該輪回直到 SQLCODE 為 100 時才終了。此時,了局會合全數的行都已被獲取。





回頁首



用游標更新和刪除行

如前所述,可以對游標所指向的行進行 positioned 更新或刪除。在更新或刪除之前,必需嘗試一條 fetch 語句,并且前去的 SQLCODE 不克不及為 100(或一個錯誤)。了局會合的每一行都可以以這種體例進行措置。上面是一個例子:

EXEC SQL DECLARE CURSOR C0 FOR SELECT NAME, SALARY FROM STAFF FOR UPDATE OF DEPT;	
EXEC SQL FETCH C0 INTO :HVNAME, :HVSAL;
/* THERE MIGHT BE PROGRAM LOGIC HERE TO CHECK THE EMPLOYEE NAME AND SALARY */
/* AND ONLY EXECUTE THE UPDATE IF SOME CRITERIA APPLY                      */
EXEC SQL UPDATE STAFF SET DEPT = :NEWDEPT WHERE CURRENT OF C0;	


該代碼從 STAFF 表中檢索雇員信息,并批準更新雇員的部分。DECLARE CURSOR 語句提供究詰,其中列出 namesalary 列作為被檢索的列,并指出某些行中的 dept 列可以更新。FETCH 語句將雇員和薪水值放入次第變量中。UPDATE 語句用于將之前獲取的行中 dept 列的值更新為次第變量 newdept 中的值。

固然這里沒有浮現,但每每要運用次第邏輯控制輪回,使輪回在達到了局集的最初時終了,并且只更新某些行。





回頁首



封閉游標

封閉游標可以釋放游標的內部存儲,并使游標不再可用。封閉游標的語法很是簡樸:

CLOSE C0


默許環(huán)境下,封閉一個游標并不會釋放它所持有的鎖。要釋放鎖,還需添加 WITH RELEASE 子句:

CLOSE C0 WITH RELEASE


這使得 DB2 檢討檢討釋放全數的讀鎖。可是,DB2 將保存用于更新行的鎖,并且概略需求為其他利用或交互保存一些讀鎖。

當游標處于翻開形態(tài)時,可以在任何時分封閉它。也即是說,在封閉游標前,不需求獲取整個了局集。游標封閉后,還可以再次翻開,就像之前沒有被運用過一樣。




版權聲明: 原創(chuàng)作品,批準轉載,轉載時請務必以超鏈接體式格式標明文章 原始理由 、作者信息和本聲明。否則將清查軌則責任。

轉載于:https://www.cnblogs.com/zgqjymx/archive/2011/03/06/1972868.html

總結

以上是生活随笔為你收集整理的DB2 9 使用拓荒(733 检讨)认证指南,第 2 部分: DB2 数据操作(6)的全部內容,希望文章能夠幫你解決所遇到的問題。

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