Parfois il est utile de savoir si une procédure stockée contient tel ou tel mot-clé. Par exemple pour savoir si un vieux champ est encore utilisé ou autre.
Pour celà, il faut utiliser les tables système de la base de données.
La table sysobject contient tous les objet de la base de données, y compris les procédures stockées. Leur type est 'P'. Le code de la procédure stockée se trouve lui dans syscomments dans le champ syscomments.text. Donc il est facile de lier ces 2 tables puis faire le tri.
Le code ci-dessous cherche le mot-clé "Keyword".
Une autre variante est d'utiliser la vue INFORMATION_SCHEMA.ROUTINES. Mais dans mon cas, moins efficace car je ne sais pas pourquoi, il rate une procédure stockée mais fonctionne aussi bien pour les fonctions.
Source / Exemple :
-- Variante table système
SELECT sys.sysobjects.name, sys.syscomments.text
FROM sys.sysobjects INNER JOIN syscomments
ON sys.sysobjects.id = sys.syscomments.id
WHERE sys.syscomments.text LIKE '%Keyword%'
AND sys.sysobjects.type = 'P'
ORDER BY sys.sysobjects.NAME
GO
-- Variante vue INFORMATION_SCHEMA.ROUTINES pour SP
SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%Keyword%'
AND ROUTINE_TYPE='PROCEDURE'
ORDER BY ROUTINE_NAME
GO
--Variante vue INFORMATION_SCHEMA.ROUTINES pour fonction
SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%Keyword%'
AND ROUTINE_TYPE='FUNCTION'
ORDER BY ROUTINE_NAME
Conclusion :
Comme on le voit, les tables système peuvent être très utile pour effectuer des recherches dans le code des procédures stockées et aussi bien plus.
25 juil. 2013 à 09:37
1 juil. 2013 à 16:26
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.