Sql-Server
如果函式不存在,則在 SQL Server 中創建函式
If not Exists (Select * from sys.objects where name ='FNLX_getDate' and type =N'FN') Create function [dbo].[FNLX_getDate]() returns Datetime as Begin ................. End
當我執行上面的腳本時,我得到了錯誤
關鍵字“function”附近的語法不正確。
有什麼問題?
使用 Microsoft SQL Server 執行上述腳本。
如果您執行的是 SQL Server 2016 SP1+,則可以使用
CREATE OR ALTER
以避免有條件地預先刪除該函式:CREATE OR ALTER FUNCTION [dbo].[FNLX_getDate]() returns Datetime AS BEGIN ... END;
不幸的是,你不能那樣使用
create function
。它必須是批處理中的第一個語句。您可以嘗試使用動態 SQL,例如:
If not Exists (Select * from sys.objects where name ='FNLX_getDate' and type =N'FN') BEGIN DECLARE @sql NVARCHAR(MAX); SET @sql = N'CREATE FUNCTION ...'; EXEC sp_executesql @sql; END
或者經典方式(就像您可以查看是否使用 SSMS 生成腳本):drop 並創建:
If Exists (Select * from sys.objects where name ='FNLX_getDate' and type =N'FN') drop function [dbo].[FNLX_getDate] GO Create function [dbo].[FNLX_getDate]() returns Datetime as Begin ................. End
注意
GO
SSMS 批處理分隔符。