2011-03-10 77 views
0

我想在SQL Server的函數中使用ORDER BY子句。但我不能使用這個,它不允許。那麼,我該如何使用它?ORDER BY子句與SQL Server的函數

CREATE FUNCTION PersonIDGet 
    (

    ) 
RETURNS int 
AS 
BEGIN 

    DECLARE @PersonID int; 
     SET @PersonID = (SELECT PersonID FROM Person ORDER BY PersonID DESC); 

     RETURN @PersonID 

END 

我得到了這個錯誤。

ORDER BY子句是 視圖,內聯函數無效,派生 表,子查詢和公用表 表達式,除非TOP或FOR XML是 還指定。

+4

請發表您的查詢 – 2011-03-10 07:15:25

+0

我的猜測是,你可能在一個視圖,內聯函數,派生表,子查詢或公用表表達式中使用ORDER BY,並沒有指定TOP或FOR XML。 :-P – richard 2011-03-10 07:18:57

+0

你是否正在從你的函數返回一組數據?然後讓**調用者**決定如何對數據進行排序.... – 2011-03-10 07:23:18

回答

3

你需要在你的select語句中擁有前1名。您正在獲取多行數據,因此SQL Server無法確定PersonID將分配給@PersonID。

CREATE FUNCTION PersonIDGet 
    (

    ) 
RETURNS int 
AS 
BEGIN 
    DECLARE @PersonID int; 
    SET @PersonID = (SELECT TOP 1 PersonID FROM Person ORDER BY PersonID DESC); 
    RETURN @PersonID 
END