如果函数不存在则创建一个函数,如果函数已经存在则更改函数
Creating a Function if doesn't exist and alter the function if it already exists
我正在创建标量值函数,但在创建它之前,我想检查它是否存在,如果不存在,则使用动态脚本创建函数,然后正常更改它。我在存储过程中得到了这个,但我不能用函数做同样的事情。
我的程序如下
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[region]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[region] AS BEGIN Print ''A'' END'
END
GO
ALTER PROCEDURE [dbo].[region](---)
AS
---
END
我尝试对标量值函数采用相同的方法,如下所示
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[region]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N' CREATE FUNCTION [dbo].[region] AS RETURN 0'
开始
ALTER FUNCTION dbo.region(@dd datetime)
--
GO
但是,上面的脚本给我一个错误Incorrect syntax near the keyword 'AS'.
您需要为函数指定参数(即使 none)和 return 类型
EXEC dbo.sp_executesql @statement = N' CREATE FUNCTION [dbo].[region]() RETURNS VARCHAR AS BEGIN RETURN ''A'' END'
我正在创建标量值函数,但在创建它之前,我想检查它是否存在,如果不存在,则使用动态脚本创建函数,然后正常更改它。我在存储过程中得到了这个,但我不能用函数做同样的事情。
我的程序如下
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[region]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[region] AS BEGIN Print ''A'' END'
END
GO
ALTER PROCEDURE [dbo].[region](---)
AS
---
END
我尝试对标量值函数采用相同的方法,如下所示
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[region]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N' CREATE FUNCTION [dbo].[region] AS RETURN 0'
开始
ALTER FUNCTION dbo.region(@dd datetime)
--
GO
但是,上面的脚本给我一个错误Incorrect syntax near the keyword 'AS'.
您需要为函数指定参数(即使 none)和 return 类型
EXEC dbo.sp_executesql @statement = N' CREATE FUNCTION [dbo].[region]() RETURNS VARCHAR AS BEGIN RETURN ''A'' END'