SQL用户定义的函数:在用户定义的函数中获取TOP n记录
-
08-07-2019 - |
题
以下哪项不起作用?
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
在停止给定查询之前要处理的行数(整数)。
不隶属于 StackOverflow