2

为什么以下不起作用?

CREATE FUNCTION Test (@top integer)
RETURNS TABLE
AS
RETURN
SELECT TOP @top * FROM SomeTable
GO

我只是希望能够指定要返回的结果数。[SQL 服务器 2000。]

谢谢!

4

5 回答 5

5

对于 MS SQL 2000,您可以使用:

CREATE FUNCTION Test (@top integer)

RETURNS TABLE

AS

SET ROWCOUNT @top

RETURN SELECT * FROM SomeTable
于 2008-11-12T16:44:13.127 回答
2

对此的支持已添加到 SQL Server 2005,但在 2000 年不可用。您必须使用(颤抖)动态 sql 或其他一些数字技巧。

于 2008-11-12T16:25:00.153 回答
1

CREATE FUNCTION 测试(@top 整数)

回报表

作为

返回

SELECT TOP (@top) * FROM SomeTable

但是,如果没有 ORDER BY 子句,它就不是很有意义(不能保证结果的顺序)。

于 2008-11-12T16:28:55.653 回答
0

糟糕,变量 TOP 在 SQL Server 2000 中不可用。任何版本也不支持动态 SQL。

于 2008-11-12T16:31:38.550 回答
0

杰克,尝试将行数设置为您的函数参数,然后进行选择。我没有试过这个,YMMV。

来自: http: //msdn.microsoft.com/en-us/library/aa259189 (SQL.80).aspx

句法

SET ROWCOUNT { number | @number_var }
Arguments

number | @number_var

是在停止给定查询之前要处理的行数(整数)。

于 2008-11-12T16:45:24.700 回答