2011年9月14日 星期三

查詢某個字串包含在哪些預存程序當中?

假如您要查詢哪些預存程序原始碼包含某個字串,譬如"ld_bal_",您可以
使用如下的查詢方式查詢


USE tableName
select
O.id,
O.name as ObjectName,
c.text
from dbo.syscomments C left join dbo.sysobjects O
on C.id=O.id
where O.xtype='P' and C.text like '%ld_bal_%'


想知道為什麼嗎? 要單獨把 syscomments 和 sysobjects 資料表撈出來看就知道啦!
另外提供xtype的定義供您參考:

MSSQL 2008 R2
AF = 彙總函式 (CLR)
C = CHECK 條件約束
D = 預設值或 DEFAULT 條件約束
F = FOREIGN KEY 條件約束
L = 記錄
FN = 純量函數
FS = 組件 (CLR) 純量函數
FT = 組件 (CLR) 資料表值函式
IF = 內嵌資料表函數
IT = 內部資料表
P = 預存程序
PC = 組件 (CLR) 預存程序
PK = PRIMARY KEY 條件約束 (類型是 K)
RF = 複寫篩選預存程序
S = 系統資料表
SN = 同義字
SQ = 服務佇列
TA = 組件 (CLR) DML 觸發程序
TF = 資料表函數
TR = SQL DML 觸發程序
TT = 資料表類型
U = 使用者資料表
UQ = UNIQUE 條件約束 (類型是 K)
V = 檢視
X = 擴充預存程序



最後再提供一個可以顯示資料表欄位資訊的系統資料表 
select * from Syscolumns

沒有留言:

張貼留言