为什么以下不起作用?
CREATE FUNCTION Test (@top integer)
RETURNS TABLE
AS
RETURN
SELECT TOP @top * FROM SomeTable
GO
我只是希望能够指定要返回的结果数。[SQL 服务器 2000。]
谢谢!
为什么以下不起作用?
CREATE FUNCTION Test (@top integer)
RETURNS TABLE
AS
RETURN
SELECT TOP @top * FROM SomeTable
GO
我只是希望能够指定要返回的结果数。[SQL 服务器 2000。]
谢谢!
对于 MS SQL 2000,您可以使用:
CREATE FUNCTION Test (@top integer)
RETURNS TABLE
AS
SET ROWCOUNT @top
RETURN SELECT * FROM SomeTable
对此的支持已添加到 SQL Server 2005,但在 2000 年不可用。您必须使用(颤抖)动态 sql 或其他一些数字技巧。
CREATE FUNCTION 测试(@top 整数)
回报表
作为
返回
SELECT TOP (@top) * FROM SomeTable
去
但是,如果没有 ORDER BY 子句,它就不是很有意义(不能保证结果的顺序)。
糟糕,变量 TOP 在 SQL Server 2000 中不可用。任何版本也不支持动态 SQL。
杰克,尝试将行数设置为您的函数参数,然后进行选择。我没有试过这个,YMMV。
来自: http: //msdn.microsoft.com/en-us/library/aa259189 (SQL.80).aspx
句法
SET ROWCOUNT { number | @number_var }
Arguments
number | @number_var
是在停止给定查询之前要处理的行数(整数)。