Juste un coup de pouce, mais voici une autre façon d'écrire FizzBuzz :) 100 lignes suffisent pour afficher l'instruction WITH, je pense.
;WITH t100 AS (
SELECT n=number
FROM master..spt_values
WHERE type='P' and number between 1 and 100
)
SELECT
ISNULL(NULLIF(
CASE WHEN n % 3 = 0 THEN 'Fizz' Else '' END +
CASE WHEN n % 5 = 0 THEN 'Buzz' Else '' END, ''), RIGHT(n,3))
FROM t100
Mais le vrai pouvoir derrière WITH (connu sous le nom d'expression de table commune http://msdn.microsoft.com/en-us/library/ms190766.aspx "CTE") dans SQL Server 2005 et supérieur est la récursivité, comme ci-dessous où la table est construite à travers des itérations ajoutées à la table virtuelle à chaque fois.
;WITH t100 AS (
SELECT n=1
union all
SELECT n+1
FROM t100
WHERE n < 100
)
SELECT
ISNULL(NULLIF(
CASE WHEN n % 3 = 0 THEN 'Fizz' Else '' END +
CASE WHEN n % 5 = 0 THEN 'Buzz' Else '' END, ''), RIGHT(n,3))
FROM t100
Pour exécuter une requête similaire dans toutes les bases de données, vous pouvez utiliser le sp_msforeachdb non documenté . Cela a été mentionné dans une autre réponse, mais c'est sp_msforeachdb, pas sp_foreachdb.
Soyez prudent lorsque vous l'utilisez, car certaines choses ne correspondent pas à vos attentes. Prenons cet exemple
exec sp_msforeachdb 'select count(*) from sys.objects'
Au lieu du nombre d'objets dans chaque base de données, vous obtiendrez le même nombre signalé, commencez par celui de la base de données actuelle. Pour contourner ce problème, "utilisez" toujours la base de données en premier. Notez les crochets pour qualifier les noms de bases de données à plusieurs mots.
exec sp_msforeachdb 'use [?]; select count(*) from sys.objects'
Pour votre requête spécifique sur le remplissage d'une table de pointage, vous pouvez utiliser quelque chose comme ci-dessous. Pas sûr de la colonne DATE, donc cette table de pointage ne contient que les colonnes DBNAME et IMG_COUNT, mais j'espère que cela vous aidera.
create table #tbl (dbname sysname, img_count int);
exec sp_msforeachdb '
use [?];
if object_id(''tbldoc'') is not null
insert #tbl
select ''?'', count(*) from tbldoc'
select * from #tbl