我正在创建一个表值函数但是在创建之前我想检查它是否存在以及它是否不存在然后使用动态脚本创建函数然后正常更改它。
IF NOT EXISTS
(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[region]')
AND OBJECTPROPERTY(id,N'IsTableFunction') = 1)
BEGIN
EXEC dbo.sp_executesql
@statement = N' CREATE FUNCTION [dbo].[region]()
RETURNS TABLE AS BEGIN RETURN ''A'' END'
GO
ALTER FUNCTION dbo.region(@dd datetime)
--
GO
但是,上面的脚本给我一个错误Incorrect syntax near the keyword 'RETURN'.
答案 0 :(得分:2)
我认为你必须写如下:
CREATE FUNCTION [dbo].[region]()
RETURNS TABLE AS return ( select 'A')
如果你想返回一个变量表只是为了插入它而在返回结果之前,你可以使用以下内容,
CREATE FUNCTION [dbo].[region]()
RETURNS @table_buffer TABLE
(
TransDate datetime,
Company nvarchar(4),
RECID bigint
)
AS
begin
insert into @table_buffer select -- here you will complete it according to your need
return
end