SQL 用户定义函数:在用户定义函数中获取 TOP n 记录
为什么下面的不起作用?
CREATE FUNCTION Test (@top integer)
RETURNS TABLE
AS
RETURN
SELECT TOP @top * FROM SomeTable
GO
我只是希望能够指定要返回的结果数。 [SQL Server 2000。]
谢谢!
How come the following doesn't work?
CREATE FUNCTION Test (@top integer)
RETURNS TABLE
AS
RETURN
SELECT TOP @top * FROM SomeTable
GO
I just want to be able to be able to specify the number of results to be returned. [SQL Server 2000.]
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
对于 MS SQL 2000,您可以使用:
For MS SQL 2000, you can use:
SQL Server 2005 中添加了对此的支持,但在 2000 年中不可用。您必须使用(令人震惊的)动态 sql 或其他一些数字技巧。
Support for this was added to SQL Server 2005, but it's not available in 2000. You'd have to use (shudder) dynamic sql or some other number trick instead.
CREATE FUNCTION Test (@top integer)
RETURNS TABLE
AS
RETURN
SELECT TOP (@top) * FROM SomeTable
GO
但是,如果没有 ORDER BY 子句,则意义不大(不保证结果的顺序)。
CREATE FUNCTION Test (@top integer)
RETURNS TABLE
AS
RETURN
SELECT TOP (@top) * FROM SomeTable
GO
However without an ORDER BY clause it is not very meaningful (the order of the results is not guaranteed).
哎呀,变量 TOP 在 SQL Server 2000 中不可用。任何版本也不支持动态 SQL。
Oops a variable TOP is not available in SQL Server 2000. Nor is Dynamic SQL supported in any version.
杰克,尝试将行计数设置为您的函数参数,然后进行选择。 我还没试过这个,YMMV。
来自:http://msdn.microsoft。 com/en-us/library/aa259189(SQL.80).aspx
语法
停止给定查询之前要处理的行数(整数)。
Jake, try setting the rowcount to your function parameter and then doing your select. I have not tried this, YMMV.
From: http://msdn.microsoft.com/en-us/library/aa259189(SQL.80).aspx
Syntax
Is the number (an integer) of rows to be processed before stopping the given query.