㈠ 如何快速查找使用了某個欄位的所有存儲過程
當一個系統中使用了很多的表,並且存在大量的存儲過程,當資料庫中的某個表刪除了某個欄位,那麼相應的存儲過程也需要改動,但是我們不知道哪些存儲過程使用了該欄位,那我們該怎麼辦?我們可以從之前的文檔一個一個查找使用了該欄位的存儲過程,但是這樣效率很多,而且還容易出錯,我們可以使用下面的方法來查找所有使用了某個欄位的存儲過程。如下的函數:
[sql] view plainprint?
01.GO
02.SELECT obj.Name 存儲過程名, sc.TEXT 存儲過程內容
03.FROM syscomments sc
04.INNER JOIN sysobjects obj ON sc.Id = obj.ID
05.WHERE sc.TEXT LIKE '%' + '欄位名' + '%'
06.AND TYPE = 'P'
07.GO
GO
SELECT obj.Name 存儲過程名, sc.TEXT 存儲過程內容
FROM syscomments sc
INNER JOIN sysobjects obj ON sc.Id = obj.ID
WHERE sc.TEXT LIKE '%' + '欄位名' + '%'
AND TYPE = 'P'
GO
下面舉一個例子,比如查找資料庫中所有使用了AdId這個欄位的所有存儲過程。
[sql] view plainprint?
01.USE KyCms
02.GO
03.SELECT obj.Name 存儲過程名, sc.TEXT 存儲過程內容
04.FROM syscomments sc
05.INNER JOIN sysobjects obj ON sc.Id = obj.ID
06.WHERE sc.TEXT LIKE '%' + 'AdID' + '%'
07.AND TYPE = 'P'
08.GO
USE KyCms
GO
SELECT obj.Name 存儲過程名, sc.TEXT 存儲過程內容
FROM syscomments sc
INNER JOIN sysobjects obj ON sc.Id = obj.ID
WHERE sc.TEXT LIKE '%' + 'AdID' + '%'
AND TYPE = 'P'
GO
㈡ 存儲過程禁止空參數
默認情況下,參數可為空。如果傳遞 NULL 參數值並且該參數語句中使用,而該語句中引用的列又不允許使用 NULL,則 SQL Server 會產生一條錯誤信息。為了防止向不允許使用 NULL 的列傳遞 NULL 參數值,應向過程中添加編程邏輯或為該列使用默認值(使用 的 DEFAULT 關鍵字)。