2012-06-18 1 views
1

Я использую хранимую процедуру для создания навигации по страницам при просмотре списка магазинов. У меня есть только одна таблица Store с колонками Name & S_Id.Навигация по страницам с использованием хранимой процедуры (не может связывать составной идентификатор)

А вот мой запрос:

SELECT Stores.Name 
    FROM 
     (
     SELECT ROW_NUMBER() OVER (ORDER BY Stores.S_Id) AS rownum , 
      Stores.Name 
     FROM Stores  
     )AS ordered 
    WHERE ordered.rownum BETWEEN [someValue] AND [someValue] 

Но когда я пытаюсь сохранить процедуру, я получаю сообщение об ошибке:

can not bind a composite identifier Stores.Name

Я видел много вопросов, но не могу найти, что не так. Если бы я делал это с LINQ Я попробую что-то вроде этого:

(select name from Stores order by S_Id).Skip(n).Take(m) . 
+0

Какой инструмент/программа отправляет точное сообщение об ошибке? –

ответ

1

Ваш подзапрос определяет новое имя - ordered - для данных - так что вы должны использовать это новое название вместо stores:

SELECT 
    ordered.Name <=== you're selecting from the subquery which is called "ordered" - use that name!! 
FROM 
    (SELECT 
     ROW_NUMBER() OVER (ORDER BY Stores.S_Id) AS rownum, 
     Stores.Name 
    FROM Stores  
    ) AS ordered 
WHERE 
    ordered.rownum BETWEEN [someValue] AND [someValue] 
Смежные вопросы