为什么会出错?
CREATE FUNCTION [dbo].[seth] (@IdUrl BIGINT)
RETURNS TABLE
AS
RETURN(SELECT * FROM dbo.NetGraph ORDER BY IdUrl)
错误
Msg 1033, Level 15, State 1, Procedure seth, Line 4
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.
或
如何在C#数据表中按字段排序?
答案 0 :(得分:4)
你可以做“SELECT * FROM dbo.seth(@your_value)ORDER BY IdUrl”
答案 1 :(得分:2)
ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效,除非还指定了TOP或FOR XML
这是因为所有这些对象都是为了返回一个行集,可以进一步组合,查询或排序。在以前版本的SQL Server(例如2000)中,它允许您在其中一些(例如VIEW)中放置“ORDER BY”,特别是如果使用“TOP 100 PERCENT”闪避。然而,2005变得更聪明,所以即使你在视图定义中有TOP 100 PERCENT,它也会忽略排序 - 因为它知道TOP 100 PERCENT是所有行,它不必执行排序来确定要返回的行。
基本上,纯粹表示目的的ORDER只能在最外层进行。