Table name : sp_text Column name : obj_Text
Dans cette colonne, toutes les procédures stockées sont stockées en tant que text.
J'ai besoin de récupérer toutes les procédures stockées qui ont raiserror
et % d dans raiserror
.
par exemple, un SP contient le raiserror
suivant dans celui-ci.
raiserror('quantity adjustment is not allowed in row no %d', 16, 1, @fprowno)
J'ai essayé la requête ci-dessous mais je n'ai pas pu arriver au résultat.
select * from sp_text_ismail where obj_Text like '%raiserror%' and obj_Text like '%/%d%'
Utilisez la vue système sys.sql_modules : beaucoup plus simple. Et vous pouvez échapper% avec des crochets dans le LIKE
SELECT OBJECT_NAME(object_id), * FROM sys.sql_modules WHERE definition LIKE '%raiserror%[%]d%'
Vous ne pouvez également pas sélectionner ou filterr sur une procédure stockée.
Vous devez utiliser le caractère d'échappement '\' dans votre requête et également le mentionner à la fin. Vous avez utilisé une barre oblique au lieu d'une barre oblique inverse. En fait, vous pouvez utiliser n'importe quel personnage comme caractère d'échappement, mais vous devez le mentionner à la fin.
Essayez cette requête
select * from sp_text_ismail where obj_Text like '%raiserror%' and obj_Text like '%\%d%' ESCAPE '\'