Sql 通过条件创建函数
我想在函数不存在时创建函数,并在函数存在时更新 但mssql表示,函数附近的语法是错误的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
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
--