Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 是否可以创建一个将表作为参数并返回表的函数?_Sql Server 2005_Function - Fatal编程技术网

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

Sql server 2005 是否可以创建一个将表作为参数并返回表的函数?,sql-server-2005,function,Sql Server 2005,Function,我需要创建一个函数,将表(或表变量)作为输入参数,并返回一个表值作为参数。在以下限制条件下,这是否可行: SQL Server 2005 CLR函数不是选项(应仅为TSQL) 任何示例代码都会很有帮助。在SQL Server 2008之前,您不能使用表参数类型 一种选择是使用xml传入表,使用XPath解析表。在SQL Server 2008之前,不能使用表参数类型 一种选择是使用xml传入表,使用XPath解析表。我尝试过,但是没有,@gbn是正确的,在SQL Server 2005中不能

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

  • SQL Server 2005
  • CLR函数不是选项(应仅为TSQL)

任何示例代码都会很有帮助。

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


一种选择是使用xml传入表,使用XPath解析表。

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


一种选择是使用xml传入表,使用XPath解析表。

我尝试过,但是没有,@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

我试过了,但是没有,@gbn是正确的,您不能在SQLServer2005中使用它

以下是我的尝试:

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