2013-04-24 104 views
0

我需要修改一個存儲過程,並且我想了解一下實際上「修改」存儲過程的內容。我有一個存儲過程,並在它是一個語句,如:修改存儲過程是否更新存儲過程定義?

ALTER PROCEDURE [dbo].[get_orders] 
    INSERT INTO customer (id, date, name) 
    VALUES(@id, getdate(), @name) 

    SELECT 
    full_id, 
    fname, 
    lname, 
    ... 
    FROM orders 

如果我修改該存儲過程(右鍵單擊SSMS的SP,然後選擇「修改」),通過添加列Select語句例如,然後單擊「Execute」(或按F5),這是否只會更新存儲過程定義,還是會「運行」其中的代碼,例如,運行「INSERT」語句(或者如果有「DELETE」)並實際做一些插入(或刪除)?

我假設它只會更新存儲過程,並不實際運行查詢,但我只是想確定。對不起,如果這個問題似乎很基本,但我不能輕鬆找到答案。

在此先感謝!

+0

你正在改變程序的「膽量」。但權限保持不變。如果您刪除/重新添加,您將失去最初使用它的權限。這是2美分的版本。 – granadaCoder 2013-04-24 15:17:04

+0

如果您更改「簽名」(參數),那可能是一個格扎球。 – granadaCoder 2013-04-24 15:17:46

回答

2

alter存儲過程的定義就是你正在做的 - 改變上述過程中的定義/代碼。這不是要去execute的程序,要做到這一點,你需要exec你的程序已經alter編輯。

+0

謝謝,這很有道理,很好的解釋。 – 2013-04-24 14:10:06

1

如果您在該語句上執行,它應該只存儲過程更改。

當你在資源管理器中找到你的程序,然後點擊執行它,然後運行程序。

+0

謝謝,這非常有幫助。 – 2013-04-24 14:10:41