[英]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.