2011-03-10 57 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