SQL 用户定义函数:在用户定义函数中获取 TOP n 记录

发布于 2024-07-08 03:01:47 字数 201 浏览 5 评论 0原文

为什么下面的不起作用?

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

影子的影子 2024-07-15 03:01:47

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

CREATE FUNCTION Test (@top integer)

RETURNS TABLE

AS

SET ROWCOUNT @top

RETURN SELECT * FROM SomeTable

For MS SQL 2000, you can use:

CREATE FUNCTION Test (@top integer)

RETURNS TABLE

AS

SET ROWCOUNT @top

RETURN SELECT * FROM SomeTable
暮年慕年 2024-07-15 03:01:47

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.

绿光 2024-07-15 03:01:47

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).

关于从前 2024-07-15 03:01:47

哎呀,变量 TOP 在 SQL Server 2000 中不可用。任何版本也不支持动态 SQL。

Oops a variable TOP is not available in SQL Server 2000. Nor is Dynamic SQL supported in any version.

计㈡愣 2024-07-15 03:01:47

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

来自:http://msdn.microsoft。 com/en-us/library/aa259189(SQL.80).aspx

语法

SET ROWCOUNT { number | @number_var }
Arguments

number | @number_var

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

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

SET ROWCOUNT { number | @number_var }
Arguments

number | @number_var

Is the number (an integer) of rows to be processed before stopping the given query.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文