2015-09-07 105 views
0

這裏的第一篇文章......使用IF NOT EXISTS創建函數

我有很多,我每次都要手動運行當我安裝的SSRS報表套件創建缺少的功能和存儲過程的SQL腳本。

理想情況下,我想在一段代碼中自動執行此操作,因此查看了IF NOT EXIST語句。

我的想法是......檢查函數退出,如果Y移動到下一個腳本,如果N,運行CREATE FUNCTION腳本,然後移動到下一個腳本:

IF NOT EXISTS 
(SELECT * FROM sys.objects 
WHERE object_id = OBJECT_ID(N'[report].[fnR_ActiveCustomers]') 
AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) 

CREATE FUNCTION [report].[fnR_ActiveCustomers] 
(... etc etc 

當我開始這個我得到:「創建函數必須是批處理中唯一的語句」。

任何人都可以幫助我嗎?

感謝 李

回答

0

使用GO中分批之間:

IF NOT EXISTS 
(SELECT * FROM sys.objects 
WHERE object_id = OBJECT_ID(N'[report].[fnR_ActiveCustomers]') 
AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) 
Go 
CREATE FUNCTION [report].[fnR_ActiveCustomers] 
(... etc etc 
+0

你確定這個工程? – Shnugo

+0

是的,它會工作。 GO用作批分隔符,以便Create語句將位於單獨的批處理中,也是批處理中的第一條語句。 –

+0

試試看...沒有低於IF的DROP在第一批沒有意義... – Shnugo