SP, XML order_seq order_seq.
create table MyTable
(
some_id int,
order_seq int,
name varchar(10)
primary key(some_id, order_seq)
)
insert into MyTable values
(1, 1, '1_1'),
(1, 2, '1_2'),
(1, 3, '1_3'),
(1, 4, '1_4'),
(2, 1, '2_1'),
(2, 2, '2_2')
proc
create procedure SetOrder
@some_id int,
@new_order xml
as
;with cte as
(
select
X.N.value('@OldSeq', 'int') as OldSeq,
X.N.value('@NewSeq', 'int') as NewSeq
from @new_order.nodes('/i') as X(N)
)
update T
set order_seq = C.NewSeq
from MyTable as T
inner join cte as C
on T.order_seq = C.OldSeq
where T.some_id = @some_id
some_id = 1, SP :
exec SetOrder 1,
'<i OldSeq="1" NewSeq="4"/>
<i OldSeq="2" NewSeq="3"/>
<i OldSeq="3" NewSeq="2"/>
<i OldSeq="4" NewSeq="1"/>'
order_seq xml, .