我將所有的T-SQL DDL語句存儲在版本控制下的Visual Studio數據庫項目中。這些腳本是爲了始終運行沒有錯誤,所以他們包括降/創建語法像這樣:複製場景中SQL Server存儲過程的CREATE/ALTER語法?
use MyDatabase
go
if objectproperty(object_id('dbo.MyProcName'), 'IsProcedure') = 1 begin
drop procedure dbo.MyProcName as
end
go
-----------------------------------------------------------------------
-- $Id: $
-- Notes: blah blah
-----------------------------------------------------------------------
create procedure dbo.MyProcName as
--...
go
麻煩的是,我們已經搬到了複製方案,所以我可以不再使用我滴/創建語法因爲您不能刪除標記爲複製的對象。現在我需要創建proc,如果它不存在,或者修改它,如果它存在。而且我無法反轉我的IF
邏輯,因爲我無法在IF
聲明中創建proc - 我只能刪除它。有任何想法嗎?
編輯: 由於亞當的答案,這裏是我結束了使用。不知道爲什麼我不考慮執行SQL字符串...必須喝更多的咖啡。
use MyDatabase
go
if objectproperty(object_id('dbo.MyProcName'), 'IsProcedure') is null begin
exec('create proc dbo.MyProcName as')
end
go
-----------------------------------------------------------------------
-- $Id: $
-- Notes: blah blah
-----------------------------------------------------------------------
alter procedure dbo.MyProcName as
--...
go
哦,我的天啊。我必須要完全的大腦凍結才能執行SQL語句。謝謝。 – mattmc3 2011-02-14 15:25:12