建立儲存過程如果不存在於sql server中
Oracle確實“建立或替換”語句. 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將失敗,alter更新程式碼.
它會為管理員建立一個不同的問題,因為如果儲存過程已經存在,則create會引發誤導性的錯誤.當然,當你想要的結果發生時,你不應該看到紅色的錯誤文字.
有人有辦法壓制紅色文字嗎?我嘗試過的一切導致“CREATE / ALTER PROCEDURE必須是查詢批處理中的第一個語句”錯誤.
use [myDatabase] go if object_id('dbo.myProcedure', 'p') is null exec ('create procedure myProcedure as select 1') go alter procedure myProcedure as SET NOCOUNT ON -- real sproc code here. you don't really need BEGIN-END go
http://stackoverflow.com/questions/13866004/create-stored-procedure-if-doesnt-exist-in-sql-server