国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Home php教程 PHP開發(fā) sqlserver cursor usage and looping

sqlserver cursor usage and looping

Dec 14, 2016 am 11:34 AM

/***  
游標的使用  
 講了這個多游標的優(yōu)點,現(xiàn)在我們就親自來揭開游標的神秘的面紗。  
 使用游標的順序: 聲名游標、打開游標、讀取數(shù)據(jù)、關(guān)閉游標、刪除游標。  
1.3.1聲明游標  
最簡單游標聲明:DECLARE <游標名>CURSOR FOR<SELECT語句>;  
其中select語句可以是簡單查詢,也可以是復(fù)雜的接連查詢和嵌套查詢  
例子:[已表2 AddSalary為例子]  
Declare mycursor cursor for select * from AddSalary  
這樣我就對表AddSalary申明了一個游標mycursor   
【高級備注】  
DECLARE <游標名> [INSENSITIVE] [SCROLL] CURSORFOR<SELECT語句>  
這里我說一下游標中級應(yīng)用中的[INSENSITIVE]和[SCROLL]  
INSENSITIVE  
表明MS SQL SERVER 會將游標定義所選取出來的數(shù)據(jù)記錄存放在一臨時表內(nèi)(建立在tempdb 數(shù)據(jù)庫下)。對該游標的讀取操作皆由臨時表來應(yīng)答。因此,對基本表的修改并不影響游標提取的數(shù)據(jù),即游標不會隨著基本表內(nèi)容的改變而改變,同時也無法通過游標來更新基本表。如果不使用該保留字,那么對基本表的更新、刪除都會反映到游標中。  
另外應(yīng)該指出,當(dāng)遇到以下情況發(fā)生時,游標將自動設(shè)定INSENSITIVE 選項。  
a.在SELECT 語句中使用DISTINCT、 GROUP BY、 HAVING UNION 語句;  
b.使用OUTER JOIN;  
c.所選取的任意表沒有索引;  
d.將實數(shù)值當(dāng)作選取的列。  
SCROLL  
表明所有的提取操作(如FIRST、 LAST、 PRIOR、 NEXT、 RELATIVE、 ABSOLUTE)都可用。如果不使用該保留字,那么只能進行NEXT 提取操作。由此可見,SCROLL 極大地增加了提取數(shù)據(jù)的靈活性,可以隨意讀取結(jié)果集中的任一行數(shù)據(jù)記錄,而不必關(guān)閉再  
重開游標。   
1.3.2 打開游標  
非常簡單,我們就打開剛才我們聲明的游標mycursor  
OPEN mycursor   
1.3.3讀取數(shù)據(jù)  
FETCH [ NEXT | PRIOR | FIRST | LAST] FROM { 游標名  | @游標變量名 } [ INTO @變量名 [,…] ]  
參數(shù)說明:  
NEXT   取下一行的數(shù)據(jù),并把下一行作為當(dāng)前行(遞增)。由于打開游標后,行指針是指向該游標第1行之前,所以第一次執(zhí)行FETCH NEXT操作將取得游標集中的第1行數(shù)據(jù)。NEXT為默認的游標提取選項。  
INTO @變量名[,…]  把提取操作的列數(shù)據(jù)放到局部變量中。列表中的各個變量從左到右與游標結(jié)果集中的相應(yīng)列相關(guān)聯(lián)。各變量的數(shù)據(jù)類型必須與相應(yīng)的結(jié)果列的數(shù)據(jù)類型匹配或是結(jié)果列數(shù)據(jù)類型所支持的隱性轉(zhuǎn)換。變量的數(shù)目必須與游標選擇列表中的列的數(shù)目一致。  
現(xiàn)在我們就取出mycursor游標的數(shù)據(jù)吧!   
當(dāng)游標被打開時,行指針將指向該游標集第1行之前,如果要讀取游標集中的第1行數(shù)據(jù),必須移動行指針使其指向第1行。就本例而言,可以使用下列操作讀取第1行數(shù)據(jù):  
Eg: Fetch next from mycursor 或則 Fetch first from mycursor  
這樣我就取出了游標里的數(shù)據(jù),但是光光這樣可不夠,我們還需要將取出的數(shù)據(jù)賦給變量  
--聲明2個變量  
declare @O_ID NVARCHAR(20)  
declare @A_Salary float  
--將取出的值傳入剛才聲明的2個變量  
Fetch next from mycursor into @ O_ID,@ A_Salary  
   
1.3.4關(guān)閉游標  
CLOSE mycursor     
           
1.3.5刪除游標  
DEALLOCATE mycursor           
   
1.3.6 實例訓(xùn)練  
**/  
CREATE PROCEDURE PK_Test  
AS  
    --聲明2個變量  
    declare @O_ID nvarchar(20)    
    declare @A_Salary float    
    --聲明一個游標mycursor,select語句中參數(shù)的個數(shù)必須要和從游標取出的變量名相同  
    declare mycursor cursor for select O_ID,A_Salary from AddSalary    
    --打開游標  
    open mycursor      
    --從游標里取出數(shù)據(jù)賦值到我們剛才聲明的2個變量中  
    fetch next from mycursor into @O_ID,@A_Salary      
    --判斷游標的狀態(tài)  
    -- 0 fetch語句成功      
    ---1 fetch語句失敗或此行不在結(jié)果集中      
    ---2 被提取的行不存在  
    while (@@fetch_status=0)  
    begin      
    --顯示出我們每次用游標取出的值  
       print &#39;游標成功取出一條數(shù)據(jù)&#39;  
       print @O_ID  
       print @A_Salary     
    --用游標去取下一條記錄  
       fetch next from mycursor into @O_ID,@A_Salary  
    end  
    --關(guān)閉游標  
    close mycursor  
    --撤銷游標  
    DEALLOCATE mycursor   
GO


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1502
276