Sélectionnez Requête à l'aide de la clause like dans Sql Server 2008

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 '\'