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
結束,歡迎指正。