2015-09-07 133 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