如何在SQL中从UDF转换数据表?

时间:2009-05-08 11:49:48

标签: sql sql-server sql-server-2005 tsql

此代码给出错误:
消息156,级别15,状态1,过程DefaultActivity,第2行 关键字“RETURN”附近的语法不正确。 消息137,级别15,状态2,过程DefaultActivity,第3行 必须声明标量变量“@returnTable”。 消息1087,级别15,状态2,过程DefaultActivity,第18行 必须声明表变量“@returnTable”。

CREATE FUNCTION dbo.DefaultActivity
RETURNS
    @returnTable table (
[VisitingCount] int,
[Time] nvarchar(50)
)

AS
BEGIN

DECLARE @DateNow DATETIME,@i int
set @DateNow='00:00'
set @i=1;

    while(@i<1440)
        begin
            set @DateNow=DATEADD(minute, 1, @DateNow)
                insert into @returnTable ([VisitingCount], [Time]) values(0, right(left(convert(nvarchar, @DateNow, 121), 16), 5))
            set @i=@i+1
        end

    RETURN
END

3 个答案:

答案 0 :(得分:3)

尝试指定一个空参数列表?

CREATE FUNCTION dbo.DefaultActivity()
RETURNS
...

答案 1 :(得分:0)

我想它应该是

CREATE FUNCTION dbo.DefaultActivity()
RETURNS                    -- RETURN vs RETURNS here

答案 2 :(得分:0)

这应该有效:

CREATE FUNCTION dbo.DefaultActivity ()
RETURNS @returnTable 
TABLE 
(
  [VisitingCount] int,
  [Time] nvarchar(50)
) 
AS
BEGIN
    DECLARE @DateNow DATETIME,@i int

    set @DateNow='00:00'
    set @i=1;

    while(@i<1440)
        begin
                set @DateNow=DATEADD(minute, 1, @DateNow)
                insert into @returnTable ([VisitingCount], [Time]) 
                values(0, right(left(convert(nvarchar, @DateNow, 121), 16), 5))
                set @i=@i+1
        end

    RETURN
END

GO

select * from dbo.DefaultActivity()