2011-01-10 99 views
3
Table name : sp_text 
Column name : obj_Text 

在此列中,所有存儲過程都以文本形式存儲。在Sql server 2008中使用like子句選擇查詢

我需要檢索所有raiserror%draiserror中的所有存儲過程。

例如,SP在其中包含以下raiserror

raiserror('quantity adjustment is not allowed in row no %d', 16, 1, @fprowno) 

我試過下面的查詢,但無法得出結果。

select * 
from sp_text_ismail 
where obj_Text like '%raiserror%' 
    and obj_Text like '%/%d%' 

回答

3

使用系統視圖sys.sql_modules:更簡單。並且您可以使用LIKE中的括號轉義%

SELECT OBJECT_NAME(object_id), * FROM sys.sql_modules 
WHERE definition LIKE '%raiserror%[%]d%' 

您也無法選擇或篩選存儲過程。

+0

什麼是「你也不能在存儲過程中選擇或過濾器」是什麼意思? – Gabe 2011-01-10 05:35:46

+0

非常感謝。 – user292848 2011-01-10 05:40:47

-1

您必須在查詢中使用轉義字符'\',並在最後提及它。你使用了正斜槓而不是後向斜槓。事實上,你可以使用任何字符作爲轉義字符,但最後你必須提及。

嘗試此查詢

select * from sp_text_ismail where obj_Text like '%raiserror%' and obj_Text like '%\%d%' ESCAPE '\'