1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
SET NOCOUNT ON
-- variables
DECLARE
@TAB VARCHAR(128),
@COL nvarchar(128),
@CHAINE VARCHAR(500),
@CMD nvarchar(4000),
@PARAMS nvarchar(4000),
@COUNT int
-- Chaine recherchée
set @CHAINE='test'
--déclaration du curseur qui va récupérer le nom des colonnes
DECLARE TABLE_CURSOR CURSOR FOR
SELECT c.name,o.name FROM syscolumns c, sysobjects o
WHERE o.type='U'
AND c.id=o.id
AND c.xtype IN (35,167,231,239,241)
OPEN TABLE_CURSOR
FETCH NEXT FROM TABLE_CURSOR
INTO @COL,@TAB
-- parcourt du cursor
WHILE @@FETCH_STATUS = 0
BEGIN
-- requete count() sur la colonne en cours
SET @CMD = 'select @cnt = count(*) from '+ @TAB +' where '+@COL+' = '+''''+@CHAINE+''''
-- paramètre
SELECT @PARAMS = N'@cnt int OUTPUT'
--execution de la requete
EXEC sp_executesql @CMD, @PARAMS, @cnt = @COUNT OUTPUT
if(@COUNT > 0)
PRINT 'Valeur '''+@CHAINE+''' trouvée dans la colonne '+@COL+' de la table '+@TAB;
-- enregistrement suivant
FETCH NEXT FROM TABLE_CURSOR INTO @COL,@TAB;
END
CLOSE TABLE_CURSOR
DEALLOCATE TABLE_CURSOR |
Partager