SQL用户定义的函数:在用户定义的函数中获取TOP n记录

时间:2008-11-12 16:20:42

标签: sql sql-server sql-server-2000 user-defined-functions

以下哪项不起作用?

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

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

谢谢!

5 个答案:

答案 0 :(得分:5)

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

CREATE FUNCTION Test (@top integer)

RETURNS TABLE

AS

SET ROWCOUNT @top

RETURN SELECT * FROM SomeTable

答案 1 :(得分:2)

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

答案 2 :(得分:1)

创建功能测试(@top integer)

退货表

AS

返回

SELECT TOP(@top)* FROM SomeTable

GO

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

答案 3 :(得分:0)

在SQL Server 2000中无法使用变量TOP。任何版本都不支持动态SQL。

答案 4 :(得分:0)

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

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

语法

SET ROWCOUNT { number | @number_var }
Arguments

number | @number_var

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