Oracle會「創建或替換」語句。 Sql服務器似乎沒有 - 如果你正在從企業管理器腳本化,它反而建議「放棄並創建」。在存儲過程中完成授權的任何情況下,刪除和創建都是不可取的,因爲它會拋出數據庫管理團隊完成的任何授權。您確實需要「創建或替換」來幫助開發人員和管理員之間的分離。如果在sql server中不存在,則創建存儲過程
我最近一直在做這樣的:
use [myDatabase]
go
create procedure myProcedure as
begin
print 'placeholder'
end
go
alter procedure myProcedure as
begin
-- real sproc code here
end
go
此我想要做什麼。如果該過程不存在,則創建它,然後更改正確的代碼。如果該過程確實存在,則創建失敗,並且該更新將使用新代碼更新代碼。
它爲管理員創建了一個不同的問題,因爲如果存儲過程已經存在,create會引發誤導性錯誤。當然,誤導,事實上,當期望的結果發生時,你不應該看到紅色錯誤文本。
有沒有人有辦法壓制紅色文字?我試過的所有東西都會導致'CREATE/ALTER PROCEDURE必須是查詢批處理中的第一條語句'。
的可能的複製[?你怎麼在SQL Server中創建或更改做(http://stackoverflow.com/questions/1434160/what-do-you-do-in-sql -server-to-create-or-alter) – ruffin
我要指出的是,如果您將權限作爲proc的一部分編寫,那麼在Drop和Create中沒有問題。如果您對proc有特殊權限,那麼它應該是存儲在源代碼庫中的腳本的一部分。然後當你去做改變時,那裏已經有了許可。 – HLGEM