SQLServer 遍歷結果集的數據 —— 使用遊標

     一個Selcet語句獲取到一個結果集,如果我們要遍歷結果集,根據每一行不同的數據進行一些增刪改查或賦值等操作(常用於存儲過程),可以使用遊標遍歷。

    以下例子是遍歷一個表的字段名並拼接SQL實現等同於Selcet * from ‘表名’ 的效果。

declare @tabelName varchar(1000)
declare @list varchar(1000)
declare @name varchar(1000)
Set @tabelName = 'SYS_Programme_Fuction' --要查詢的表名
Set @list = '' -- 必須初始化
-- 聲明遊標
DECLARE C_Employees CURSOR FAST_FORWARD FOR
   --要進行循環的結果集(根據實際修改查詢語句)
   select b.name from sysobjects a,syscolumns b where a.id=b.id and a.name = @tabelName 
OPEN C_Employees;

-- 取第一條記錄,由於上面的查詢只有一個字段name,如果有多個字段,需定義多個變量
FETCH NEXT FROM C_Employees INTO @name; 

WHILE @@FETCH_STATUS=0
BEGIN
    --要進行的操作(根據實際修改)
    Set @list = @list + ',' + @name
    -- 取下一條記錄
    FETCH NEXT FROM C_Employees INTO @name;
END

-- 關閉遊標
CLOSE C_Employees;

-- 釋放遊標
DEALLOCATE C_Employees;

declare @sql nvarchar(1000)  
set @sql='select '+right(@list,len(@list)-1)+' from ' + @tabelName  
exec (@sql)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章