2010-08-27 2 views
0

почему ошибка?Сортировать по таблице функции

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

Что такое NetGraph? – tster

+0

Зачем вам нужно сортировать в самой функции? Если вы собираетесь использовать это в таблице данных C#, почему бы не сортировать в источнике данных C#? –

ответ

4

вы можете сделать "SELECT * FROM dbo.seth (@your_value) ORDER BY IdUrl"

2

Поручения п недействительна в представлениях, встроенных функциях, производных таблиц, подзапросов и общих табличных выражений, если не указан TOP или FOR XML

Это связано с тем, что все эти объекты предназначены для возврата набора строк, которые могут быть дополнительно объединены, запрошены или упорядочены. В предыдущих версиях SQL Server (например, 2000) это позволяло бы выставлять «ORDER BY» внутри некоторых из них (например, VIEW), особенно если использовать «TOP 100 PERCENT». Однако 2005 год стал более умным, поэтому даже если у вас есть TOP 100 PERCENT в определении представления, он будет игнорировать порядок - поскольку он знает, что TOP 100 PERCENT - это все строки, ему не нужно выполнять сортировку, чтобы определить, какие строки для возврата.

В принципе, ORDERing для чисто презентационных целей предназначен только для того, чтобы быть выполненным на самом внешнем уровне.

+0

+1 Хороший ответ. Удалит мою «работу». – starskythehutch

+0

спасибо, хорошая информация – Shahram

Смежные вопросы