是否可以创建一个将表作为参数并返回表的函数?

时间:2009-07-29 18:20:27

标签: sql-server-2005 function

我需要创建一个函数,该函数将表(或表变量)作为输入参数,并返回一个表值作为参数。这是否可能出现以下限制:

  • SQL Server 2005
  • CLR功能不是一个选项(应该只是TSQL)

作为入门者的任何示例代码都会有所帮助。

2 个答案:

答案 0 :(得分:3)

在SQL Server 2008之前,不能使用表参数类型。

一种选择是使用xml传入表和XPath来解析它。

答案 1 :(得分:0)

我试过了,但不,@ gbn是正确的,你不能在SQL Server 2005中

这是我的尝试:

CREATE FUNCTION dbo.TestTable
(
    @InputTable  table (RowID int, DataValue varchar(10))
)
RETURNS
table (RowID int, DataValue varchar(10))
AS
    SELECT * FROM @InputTable ORDER BY 1 DESC
RETURN 
go

DECLARE @t table (RowID int, DataValue varchar(10))

INSERT INTO @t VALUES (3,'cccc')
INSERT INTO @t VALUES (2,'bbbb')
INSERT INTO @t VALUES (1,'aaaa')

select * from @t
select * from dbo.TestTable(@t)

这里是错误:

Msg 156, Level 15, State 1, Procedure TestTable, Line 3
Incorrect syntax near the keyword 'table'.
Msg 1087, Level 15, State 2, Procedure TestTable, Line 8
Must declare the table variable "@InputTable".
Msg 1087, Level 15, State 2, Line 1