MSSQL數據庫服務器上有不少相似的數據庫,須要將這些數據庫統一修改其中的某些表或者某些命令,那麼就會想到用遊標來遍歷。sql
先來講思路:數據庫
1,首先須要查詢出全部的數據庫;服務器
select [name] from [master].[dbo].[sysdatabases] order by [name]; --查詢MSSQL中全部數據庫名稱spa
2,用遊標CURSOR來集合查詢出來的數據庫名稱集合,來實現循環遍歷每個數據庫;code
3,在循環遍歷每個數據庫名稱時,經過拼接sql語句來實現命令字符串,而且用EXEC執行命令;blog
注意:能夠根據我的須要對數據庫名稱進行篩選。token
代碼示例以下:字符串
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
結束,歡迎指正。ast