游標遍歷所有數據庫循環執行修改數據庫的sql命令


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

 

結束,歡迎指正。

 


免責聲明!

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



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