SQL 用户定义函数:获取用户定义函数中的 TOP n 记录
Posted
技术标签:
【中文标题】SQL 用户定义函数:获取用户定义函数中的 TOP n 记录【英文标题】:SQL User-Defined Functions: Fetching TOP n records in a user-defined function 【发布时间】:2008-11-12 16:20:42 【问题描述】:为什么下面的不起作用?
CREATE FUNCTION Test (@top integer)
RETURNS TABLE
AS
RETURN
SELECT TOP @top * FROM SomeTable
GO
我只是希望能够指定要返回的结果的数量。 [SQL Server 2000。]
谢谢!
【问题讨论】:
【参考方案1】:对于 MS SQL 2000,您可以使用:
CREATE FUNCTION Test (@top integer)
RETURNS TABLE
AS
SET ROWCOUNT @top
RETURN SELECT * FROM SomeTable
【讨论】:
【参考方案2】:SQL Server 2005 中添加了对此的支持,但在 2000 年不可用。您必须使用(颤抖)动态 sql 或其他一些数字技巧。
【讨论】:
【参考方案3】:CREATE FUNCTION 测试(@top 整数)
返回表
作为
返回
SELECT TOP (@top) * FROM SomeTable
去
但是,如果没有 ORDER BY 子句,它就不是很有意义(不能保证结果的顺序)。
【讨论】:
【参考方案4】:糟糕,变量 TOP 在 SQL Server 2000 中不可用。任何版本也不支持动态 SQL。
【讨论】:
【参考方案5】:杰克,尝试将行数设置为您的函数参数,然后进行选择。这个我没试过,YMMV。
发件人:http://msdn.microsoft.com/en-us/library/aa259189(SQL.80).aspx
语法
SET ROWCOUNT number | @number_var
Arguments
number | @number_var
是在停止给定查询之前要处理的行数(整数)。
【讨论】:
您不能在用户定义的函数中使用 set rowcount以上是关于SQL 用户定义函数:获取用户定义函数中的 TOP n 记录的主要内容,如果未能解决你的问题,请参考以下文章