2010-11-14 157 views
4

我在重命名存儲過程時觀察到以下功能。重命名存儲過程

sp_RENAME 'User_Validate', 'sp_UserValidate' 

當我做sp_helptext sp_UserValidate程序的名字,我看到的是

CREATE PROCEDURE User_Validate 
(@userEmail nvarchar(200), 
@userPassword nvarchar(32)).... 

爲什麼沒有名字來取得在存儲過程中更新?

但是當我檢查

select * from sys.procedures 

我找到名稱字段更新?它背後的原因是什麼?我可以得出的唯一合乎邏輯的結論是放棄程序並用新名稱重新創建更好。

編輯1: 如果我做sp_helptext User_Validate返回「對象‘User_Validate’數據庫‘過程’不存在,或者是對於此操作無效。」但是當我查看存儲過程時,User_Validate的名字仍然存在。

注:我知道重命名存儲過程不是一個好習慣,我問的問題是出於好奇。

回答

2

sp_helptext不反向工程程序,它只是顯示原創T-SQL批處理創建的程序,包括註釋和空格。不建議重命名存儲過程,視圖,觸發器

+0

我用sp_helptext查看過程和我使用它的原因是強調一個事實,即當我使用sp_helptext查看存儲過程(代碼)的外觀時,我發現過程的名稱沒有更改。這將是愚蠢的如果我假定sp_helptext執行一些天堂功能而不是檢查文件的上下文。我的問題是,爲什麼程序中的名稱沒有改變? – Chaitanya 2010-11-14 06:16:54

+0

在一個理想的世界中,'sp_rename' *可以*進入爲原始批處理保存的文本中,解析它,並替換過程名稱。它只是沒有,我認爲對於開發努力的投資回報太低。 – 2010-11-14 06:45:49

0

sp_rename和用戶定義的函數

你的結論是正確的,你應該放棄,並使用新名稱重新創建它。同樣是在BOL規定 - Rename a Stored Procedure

您也應該檢查dependencies of a stored procedure因爲重命名一個存儲過程可能會導致如果不更新他們對

希望匹配的變化依賴對象失敗這有助於