ORDER BY子句和SQL Server的功能

时间:2011-03-10 07:13:13

标签: sql-server function

我想在SQL Server的函数中使用ORDER BY子句。但我不能使用它,它不允许这样。那么,我该怎么用?

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   也指明了。

1 个答案:

答案 0 :(得分: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