【问题标题】:creating functions by conditons按条件创建函数
【发布时间】:2017-06-07 14:58:17
【问题描述】:

如果函数不存在,我想创建它们并在它们存在时更新。

但是 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年上市了!!!创建或更改

标签: sql sql-server sql-server-2008 tsql sql-server-2012


【解决方案1】:

有条件地删除它可能更容易: (如Sql Server equivalent to Oracle's CREATE OR REPLACE VIEW

IF OBJECT_ID('[dbo].[CreateJson]') IS NOT NULL
DROP FUNCTION [dbo].[CreateJson]
GO
CREATE FUNCTION [dbo].[CreateJson]
AS
--

【讨论】:

  • 对于程序我应该使用相同的行为吗?
  • 你可以这样做。我通常会。您可以将此方法用于除表格之外的所有内容(如果您不想保留数据)
  • 你知道我可以如何处理类型吗?因为程序有对类型的引用,它看不到类型
猜你喜欢
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 2015-05-27
  • 2019-04-16
  • 2019-11-06
  • 2021-02-21
相关资源
最近更新 更多