Sql 通过条件创建函数

Sql 通过条件创建函数,sql,sql-server,sql-server-2008,tsql,sql-server-2012,Sql,Sql Server,Sql Server 2008,Tsql,Sql Server 2012,我想在函数不存在时创建函数,并在函数存在时更新 但mssql表示,函数附近的语法是错误的 IF NOT EXISTS(SELECT 1 FROM sys.objects where name='CreateJson' AND type='U' ) Begin Create function [dbo].CreateJson ( @String nvarchar(4000), @Param0 SQL_VARIANT = NULL ) returns nvarchar(4000

我想在函数不存在时创建函数,并在函数存在时更新

但mssql表示,函数附近的语法是错误的

 IF NOT EXISTS(SELECT 1 FROM sys.objects where name='CreateJson' AND type='U' )
Begin
Create function [dbo].CreateJson
(
    @String  nvarchar(4000),
    @Param0  SQL_VARIANT = NULL
)
returns nvarchar(4000)
as
begin
    declare @Null nvarchar(4) = N'NULL';
    return  replace(@String, N'{0}', cast(isnull(@Param0, @Null) as nvarchar(4000)));
end

end
IF EXISTS(SELECT 1 FROM sys.objects where name='CreateJson' AND type='U' )
Begin

Alter function [dbo].CreateJson
(
    @String  nvarchar(4000),
    @Param0  SQL_VARIANT = NULL

)
returns nvarchar(4000)
as
begin
    declare @Null nvarchar(4) = N'NULL';
     return  replace(@String, N'{0}', cast(isnull(@Param0, @Null) as nvarchar(4000)));
       end
End
Go

如何按条件更新/创建函数?

有条件地删除它可能更容易: (像)


相反,如果函数存在,请删除该函数,然后始终重新创建它。该函数最终将在2016年可用!!!创建或更改程序我应该使用相同的行为?你可以这样做。我通常这样做。您可以对表以外的所有对象使用此方法(如果您不想保留数据),您知道如何对类型执行此操作吗?因为过程有对类型的引用,但它看不到类型
IF OBJECT_ID('[dbo].[CreateJson]') IS NOT NULL
DROP FUNCTION [dbo].[CreateJson]
GO
CREATE FUNCTION [dbo].[CreateJson]
AS
--