刪除預存程序
不再需要預存程序時可將其刪除。如果另一個預存程序調用某個已刪除的預存程序,則 Microsoft SQL Server 2000 會在執行該調用過程時顯示一條錯誤資訊。但如果定義了同名和參數相同的新預存程序來替換已刪除預存程序,那麼引用該過程的其它過程仍能順利執行。例如,如果預存程序 proc1 引用預存程序 proc2,而 proc2 被刪除,但由建立了另一個名為 proc2 的預存程序,現在 proc1 將引用這一新預存程序,proc1 也不必重新編譯。
預存程序分組後,將無法刪除群組內的單個預存程序。刪除一個預存程序會將同一組內的所有預存程序都刪除。
DROP PROCEDURE
從當前資料庫中刪除一個或多個預存程序或過程組。
文法
DROP PROCEDURE { procedure } [ ,...n ]
參數
procedure
是要刪除的預存程序或預存程序組的名稱。過程名稱必須符合標識符規則。有關更多資訊,請參見使用標識符。可以選擇是否指定流程所有人名稱,但不能指定伺服器名稱和資料庫名稱。
n
是表示可以指定多個過程的預留位置。
注釋
若要查看過程名稱列表,請使用 sp_help。若要顯示流程定義(儲存在 syscomments 系統資料表內),請使用 sp_helptext。除去某個預存程序時,將從 sysobjects 和 syscomments 系統資料表中刪除有關該過程的資訊。
不能除去組內的個別過程,必須除去整個過程組。
不論使用者定義的系統過程(以 sp_ 為首碼)是否為當前資料庫,都將其從 master 資料庫中除去。如果在當前的資料庫未找到系統過程,則 Microsoft SQL Server 嘗試將其從 master 資料庫除去。
許可權
預設情況下,將 DROP PROCEDURE 許可權授予流程所有人,該許可權不可轉讓。然而,db_owner 和 db_ddladmin 固定資料庫角色成員和 sysadmin 固定伺服器角色成員可以通過在 DROP PROCEDURE 內指定所有者除去任何對象。
樣本
下例刪除 byroyalty 預存程序(在當前資料庫內)。
DROP PROCEDURE byroyalty
GO
轉自: http://goaler.xicp.net/ShowLog.asp?ID=518