2009-11-13 2 views
1

Я пытаюсь создать SP для представления выгружаемых данных на странице aspx. Я написал следующий код -Ошибка в хранимой процедуре

Create PROCEDURE [dbo].[sp_GetAllAssignmentData_Paged] 

    @currentPage INT=1, 
    @pageSize INT=20 

AS 

BEGIN 

    SET NOCOUNT ON; 
    with AssignmentData As(
     select ROW_NUMBER() over (order by a.StockNo desc) AS [Row], 
      a.StockNo,c.ClaimNo,v.[Year],v.Make,v.Model, 
      c.DOAssign,c.InsuranceComp,c.Location,c.Status 
     from 
      dbo.Assignments a, 
      dbo.Assignment_ClaimInfo c, 
      dbo.Assignment_VehicleInfo v 
     where 
      (a.AssignmentID=c.AssignmentID) and 
      (v.AssignmentID=c.AssignmentID) 
      order by a.StockNo desc 
    ) 
    SELECT StockNo, ClaimNo, [Year], Make, Model, DOAssign, InsuranceComp, Location, [Status] 
    FROM AssignmentData 
    WHERE Row between ((@currentPage - 1) * @pageSize + 1) and (@currentPage*@pageSize) END 

Когда я пытаюсь создать этот SP следующие генерируется сообщение об ошибке - Поручения п недействительна в представлениях, встроенных функциях, производных таблиц, подзапросы, и общий стол выражения, если не указано значение TOP или FOR XML.

Может кто-то исправить мою ошибку?

Спасибо, что поделились своим ценным временем.

ответ

6

Заказ вашего внутреннего набора, AssignmentData, бессмысленен, поскольку это выбор из этого набора, который будет определять порядок. Следовательно, это запрещено. Переместите lline

order by a.StockNo desc 

на ваш окончательный выбор

+0

Да, вы правы !!! благодаря – IrfanRaza

1

Перемещение OrderBy к вне WITH блока.

1

У вашего CTE есть заказ в конце, это недействительно - возьмите это, и все должно быть хорошо.

select ROW_NUMBER() over (order by a.StockNo desc) AS [Row], 
      a.StockNo,c.ClaimNo,v.[Year],v.Make,v.Model, 
      c.DOAssign,c.InsuranceComp,c.Location,c.Status 
    from 
      dbo.Assignments a, 
      dbo.Assignment_ClaimInfo c, 
      dbo.Assignment_VehicleInfo v 
    where 
      (a.AssignmentID=c.AssignmentID) and 
      (v.AssignmentID=c.AssignmentID) 
      order by a.StockNo desc -- This is the problem. 
0

Создать ПРОЦЕДУРА [DBO] [sp_GetAllAssignmentData_Paged] @currentPage INT = 1, @pageSize INT = 20ASBEGIN SET NOCOUNT ВКЛ.; с AssignmentData As (выберите ROW_NUMBER() над (порядок от a.StockNo desc) AS [Row], a.StockNo, c.ClaimNo, v. [Year], v.Make, v.Model, c.DOAssign, c. InsuranceComp, c.Location, c.Status из dbo.Assignments a, dbo.Assignment_ClaimInfo c, dbo.Assignment_VehicleInfo v где (a.AssignmentID = c.AssignmentID) и (v.AssignmentID = c.AssignmentID)) SELECT StockNo, ClaimNo, [Year], Make, Model, DOAssign, InsuranceComp, Location, [Status] FROM AssignmentData WHERE Строка между ((@currentPage - 1) * @pageSize + 1) и (@ currentPage * @ pageSize) заказ от a.StockNo desc
END


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