SQLServer存儲過程中的游標使用


游標

項目中自動增長的表格的生成涉及到數據庫查詢結果集的批量操作

檢索操作返回一組稱為結果集的行。這組返回的行都是與SQL語句相匹配的行(零行或多行)。使用簡單的SELECT 語句不能每次一行地處理所有行(相對於成批地處理它們)。

游標(cursor)是一個存儲在數據庫服務器上的數據庫查詢,它不是一條SELECT 語句,而是被該語句檢索出來的結果集。在存儲了游標之后,應用程序可以根據需要滾動或瀏覽其中的數據。

 

待查詢的數據表

 

CREATE PROCEDURE find_anpogongkuang 
    --輸入參數
    @targetID int,
    --輸出參數
    @text varchar(500) output
AS
BEGIN
    --初始化
    SET @text=''
    --定義游標
    declare cursor_test cursor
    for
    --查詢出一個結果集,注意,這里的*有幾個變量,在下面就要declare幾個變量,並且順序要一一對應
    select * from [dbo].[anpo_gongkuang] where anpo_gongkuang.target_id=@targetID
    --與上面對應
    declare @target_id int,
        @bishop varchar(50),
        @mp varchar(50),
        @qdzj varchar(50),
        @kzbz varchar(50),
        @working_condition_type varchar(50)
    --打開游標
    open cursor_test
        fetch next from cursor_test
        into @target_id,@bishop,@mp,@qdzj,@kzbz,@working_condition_type
        --fetch到數據時進行的操作
        WHILE @@FETCH_STATUS = 0
        begin
            --這里面可以寫具體的操作邏輯,例如我這里就是拼接結果賦值給@text
            fetch next from cursor_test
            into @target_id,@bishop,@mp,@qdzj,@kzbz,@working_condition_type
            SET @text=@text+@mp+'+'+@qdzj+'+'+@kzbz+'+'+@working_condition_type
        end
    --關閉游標
    close cursor_test
    --刪除游標
    deallocate cursor_test
END
GO

測試

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM