文章出處

MSSQL數據庫服務器上有很多類似的數據庫,需要將這些數據庫統一修改其中的某些表或者某些命令,那么就會想到用游標來遍歷。

先來說思路:

1,首先需要查詢出所有的數據庫;

  select [name] from [master].[dbo].[sysdatabases] order by [name]; --查詢MSSQL中所有數據庫名稱

2,用游標CURSOR來集合查詢出來的數據庫名稱集合,來實現循環遍歷每一個數據庫;

3,在循環遍歷每一個數據庫名稱時,通過拼接sql語句來實現命令字符串,并且用EXEC執行命令;

注意:可以根據個人需要對數據庫名稱進行篩選。

 

代碼示例如下:

DECLARE @sysname sysname; --數據庫名稱變量

DECLARE My_Cursor CURSOR --定義游標
FOR (select [name] from [master].[dbo].[sysdatabases]) --查出所有的數據庫名稱的集合放到游標中
OPEN My_Cursor; --打開游標
FETCH NEXT FROM My_Cursor INTO @sysname; --讀取下一行/第一行數據并存放在變量值中
WHILE @@FETCH_STATUS = 0 --是否可繼續執行循環狀態
    BEGIN
        --PRINT @sysname;
        DECLARE @sql nvarchar(max); --sql命令字符串
        SET @sql='USE ['+@sysname+'];';
        --Begin
        
        if (CHARINDEX('_QtxApp', @sysname)>0) --我只需要修改名字包含_QtxApp的數據庫
        begin
            SET @sql+='select * from dbo.Access_token'; --自定義的sql命令
            PRINT @sql;
        end
        else
        begin
            PRINT @sql;
        end
        
        --End
        EXEC(@sql); --執行字符串sql
        
        FETCH NEXT FROM My_Cursor INTO @sysname; --讀取下一行數據并存放在變量值中
    END
CLOSE My_Cursor; --關閉游標
DEALLOCATE My_Cursor; --釋放游標
GO

 

結束,歡迎指正。

 


文章列表


不含病毒。www.avast.com
全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()