CTEを使用してページングクエリを作成しようとしています。Microsoft SQL ServerManagementStudioクエリエディターから実行すると正常に動作します。そして、結果セットは私が望むように完全にソートされます。しかし、ストアドプロシージャ用に変更すると、並べ替えられていない結果が得られ、その理由がわかりません。
これが私のクエリです、
with items as
(
select ROW_NUMBER() over (order by create_time desc) number
, i.item_name item_name
, i.create_time create_time
, c.category_name category_name
, i.category_id category_id
from cb_item i, cb_category c
where i.category_id = c.category_id
and c.category_id = '4E5248FE-05DD-4D01-ABBB-80C6E3BA5CDA'
)
select item_name
, create_time
, category_name
, category_id
from items
where number between 1 and 25
そして、これはストアドプロシージャバージョンです。
create procedure ItemPage @category_id uniqueidentifier
, @from int
, @to int
, @sortby nvarchar(50)
as
begin
with items as
(
select ROW_NUMBER() over (order by @sortby) number
, i.item_name item_name
, i.create_time create_time
, c.category_name category_name
, i.category_id category_id
from cb_item i, cb_category c
where i.category_id = c.category_id
and c.category_id = @category_id
)
select item_name
, create_time
, category_name
, category_id
from items
where number between @from and @to
end
exec itempage '4E5248FE-05DD-4D01-ABBB-80C6E3BA5CDA' , 1, 25, 'create_time desc'
最初のものは私にソートされた結果を与えますが、プロシージャは私にソートされていない結果を与えます。どうしてか分かりません?