我想在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 也指明了。
答案 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