以下哪项不起作用?

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

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

谢谢!

有帮助吗?

解决方案

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

CREATE FUNCTION Test (@top integer)

RETURNS TABLE

AS

SET ROWCOUNT @top

RETURN SELECT * FROM SomeTable

其他提示

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

创建功能测试(@top integer)

退货表

AS

返回

SELECT TOP(@top)* FROM SomeTable

GO

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

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

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

来自: http:// msdn .microsoft.com / EN-US /库/ aa259189(SQL.80)的.aspx

语法

SET ROWCOUNT { number | @number_var }
Arguments

number | @number_var

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top