刪除存儲(chǔ)過(guò)程不再需要存儲(chǔ)過(guò)程時(shí)可將其刪除。如果另一個(gè)存儲(chǔ)過(guò)程調(diào)用某個(gè)已刪除的存儲(chǔ)過(guò)程,則 Microsoft® SQL Server™ 2000 會(huì)在執(zhí)行該調(diào)用過(guò)程時(shí)顯示一條錯(cuò)誤信息。但如果定義了同名和參數(shù)相同的新存儲(chǔ)過(guò)程來(lái)替換已刪除存儲(chǔ)過(guò)程,那么引用該過(guò)程的其它過(guò)程仍能順利執(zhí)行。例如,如果存儲(chǔ)過(guò)程 proc1 引用存儲(chǔ)過(guò)程 proc2,而 proc2 被刪除,但由創(chuàng)建了另一個(gè)名為 proc2 的存儲(chǔ)過(guò)程,現(xiàn)在 proc1 將引用這一新存儲(chǔ)過(guò)程,proc1 也不必重新編譯。
存儲(chǔ)過(guò)程分組后,將無(wú)法刪除組內(nèi)的單個(gè)存儲(chǔ)過(guò)程。刪除一個(gè)存儲(chǔ)過(guò)程會(huì)將同一組內(nèi)的所有存儲(chǔ)過(guò)程都刪除。
DROP PROCEDURE
從當(dāng)前數(shù)據(jù)庫(kù)中刪除一個(gè)或多個(gè)存儲(chǔ)過(guò)程或過(guò)程組。
語(yǔ)法
DROP PROCEDURE { procedure } [ ,...n ]
參數(shù)
procedure
是要?jiǎng)h除的存儲(chǔ)過(guò)程或存儲(chǔ)過(guò)程組的名稱(chēng)。過(guò)程名稱(chēng)必須符合標(biāo)識(shí)符規(guī)則。有關(guān)更多信息,請(qǐng)參見(jiàn)使用標(biāo)識(shí)符。可以選擇是否指定過(guò)程所有者名稱(chēng),但不能指定服務(wù)器名稱(chēng)和數(shù)據(jù)庫(kù)名稱(chēng)。
n 是表示可以指定多個(gè)過(guò)程的占位符。
注釋
若要查看過(guò)程名稱(chēng)列表,請(qǐng)使用 sp_help。若要顯示過(guò)程定義(存儲(chǔ)在 syscomments 系統(tǒng)表內(nèi)),請(qǐng)使用 sp_helptext。除去某個(gè)存儲(chǔ)過(guò)程時(shí),將從 sysobjects 和 syscomments 系統(tǒng)表中刪除有關(guān)該過(guò)程的信息。
不能除去組內(nèi)的個(gè)別過(guò)程,必須除去整個(gè)過(guò)程組。
不論用戶定義的系統(tǒng)過(guò)程(以 sp_ 為前綴)是否為當(dāng)前數(shù)據(jù)庫(kù),都將其從 master 數(shù)據(jù)庫(kù)中除去。如果在當(dāng)前的數(shù)據(jù)庫(kù)未找到系統(tǒng)過(guò)程,則 Microsoft® SQL Server™ 嘗試將其從 master 數(shù)據(jù)庫(kù)除去。
權(quán)限
默認(rèn)情況下,將 DROP PROCEDURE 權(quán)限授予過(guò)程所有者,該權(quán)限不可轉(zhuǎn)讓。然而,db_owner 和 db_ddladmin 固定數(shù)據(jù)庫(kù)角色成員和 sysadmin 固定服務(wù)器角色成員可以通過(guò)在 DROP PROCEDURE 內(nèi)指定所有者除去任何對(duì)象。
示例
下例刪除 byroyalty 存儲(chǔ)過(guò)程(在當(dāng)前數(shù)據(jù)庫(kù)內(nèi))。
DROP PROCEDURE byroyaltyGO
存儲(chǔ)過(guò)程分組后,將無(wú)法刪除組內(nèi)的單個(gè)存儲(chǔ)過(guò)程。刪除一個(gè)存儲(chǔ)過(guò)程會(huì)將同一組內(nèi)的所有存儲(chǔ)過(guò)程都刪除。
DROP PROCEDURE
從當(dāng)前數(shù)據(jù)庫(kù)中刪除一個(gè)或多個(gè)存儲(chǔ)過(guò)程或過(guò)程組。
語(yǔ)法
DROP PROCEDURE { procedure } [ ,...n ]
參數(shù)
procedure
是要?jiǎng)h除的存儲(chǔ)過(guò)程或存儲(chǔ)過(guò)程組的名稱(chēng)。過(guò)程名稱(chēng)必須符合標(biāo)識(shí)符規(guī)則。有關(guān)更多信息,請(qǐng)參見(jiàn)使用標(biāo)識(shí)符。可以選擇是否指定過(guò)程所有者名稱(chēng),但不能指定服務(wù)器名稱(chēng)和數(shù)據(jù)庫(kù)名稱(chēng)。
n 是表示可以指定多個(gè)過(guò)程的占位符。
注釋
若要查看過(guò)程名稱(chēng)列表,請(qǐng)使用 sp_help。若要顯示過(guò)程定義(存儲(chǔ)在 syscomments 系統(tǒng)表內(nèi)),請(qǐng)使用 sp_helptext。除去某個(gè)存儲(chǔ)過(guò)程時(shí),將從 sysobjects 和 syscomments 系統(tǒng)表中刪除有關(guān)該過(guò)程的信息。
不能除去組內(nèi)的個(gè)別過(guò)程,必須除去整個(gè)過(guò)程組。
不論用戶定義的系統(tǒng)過(guò)程(以 sp_ 為前綴)是否為當(dāng)前數(shù)據(jù)庫(kù),都將其從 master 數(shù)據(jù)庫(kù)中除去。如果在當(dāng)前的數(shù)據(jù)庫(kù)未找到系統(tǒng)過(guò)程,則 Microsoft® SQL Server™ 嘗試將其從 master 數(shù)據(jù)庫(kù)除去。
權(quán)限
默認(rèn)情況下,將 DROP PROCEDURE 權(quán)限授予過(guò)程所有者,該權(quán)限不可轉(zhuǎn)讓。然而,db_owner 和 db_ddladmin 固定數(shù)據(jù)庫(kù)角色成員和 sysadmin 固定服務(wù)器角色成員可以通過(guò)在 DROP PROCEDURE 內(nèi)指定所有者除去任何對(duì)象。
示例
下例刪除 byroyalty 存儲(chǔ)過(guò)程(在當(dāng)前數(shù)據(jù)庫(kù)內(nèi))。
DROP PROCEDURE byroyaltyGO