簡體   English   中英

SQL用戶定義的函數:在用戶定義的函數中獲取TOP n記錄

[英]SQL User-Defined Functions: Fetching TOP n records in a user-defined function

為什么以下不起作用?

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整數)

退貨表

返回

SELECT TOP(@top)* FROM SomeTable

但是,如果沒有ORDER BY子句,它就沒有意義(結果的順序不能保證)。

糟糕的變量TOP在SQL Server 2000中不可用。任何版本都不支持動態SQL。

傑克,嘗試將rowcount設置為您的函數參數,然后進行選擇。 我沒試過,YMMV。

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

句法

SET ROWCOUNT { number | @number_var }
Arguments

number | @number_var

是在停止給定查詢之前要處理的行數(整數)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM