0

我正在创建一个表值函数,但在创建它之前,我想检查它是否存在,如果它不存在,然后使用动态脚本创建函数,然后正常更改它。

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'.

4

1 回答 1

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
于 2016-02-11T06:05:40.400 回答