取得所有DB的名称, 形成一行, 并以逗号分隔
IF OBJECT_ID('tempdb..#depTemp') IS NOT NULL DROP TABLE #depTemp --以指定的sql语句,建立临时表 SELECT NAME,ROW_NUMBER() OVER(ORDER BY NAME) AS rowNumber INTO #depTemp FROM MASTER..SysDatabases --WHERE NAME LIKE 'ec%' and len(name)=4 --此处设置取db的条件 DECLARE @max INT --最大行数 SELECT @max = MAX(rowNumber) FROM #depTemp DECLARE @rowNo INT --行号 SET @rowNo = 1 DECLARE @dbsTemp VARCHAR(5000) SET @dbsTemp='' DECLARE @dbNameTemp VARCHAR(20) --用来对每一个rowNumber来进行循环操作 WHILE @rowNo <= @max BEGIN --此处对每一行要进行的操作的代码 SELECT @dbNameTemp=NAME+',' FROM #depTemp WHERE rowNumber=@rowNo SET @dbsTemp=@dbsTemp+@dbNameTemp SET @rowNo = @rowNo + 1 END SET @dbsTemp=SUBSTRING(@dbsTemp,0,LEN(@dbsTemp)) PRINT @dbsTemp DROP TABLE #depTemp--清除临时表
最佳搭档:
自动在多个DB上执行同一条sql语句 ( 存储过程版 )