Zamiast pakować to w pętlę czy rekurencję dla przesunięć o większą ilość pozycji już lepiej podać na którą pozycję ma być przesuniecie, zmienić w bazie pole odpowiedzialne za pozycję wszystkim wartościom (większym lub równym ale mniejszym niż przesuwana pozycja - dla przesunięcia w górę, analogicznie w dół) na +1 (lub -1 dla przesunięć w dół), a następnie przypisać przesuwanemu wierszowi wartość pola na które chcesz przesunąć.
Dla przykładu:
Kod
1. Sałata
2. Kapusta
3. Marchew
4. Kalafior
5. Ogórek
Przesunięcie Kalafior na pozycję numer 2 to: inkrementacja pól dla Kapusty i Marchwii a następnie przypisanie Kalafiorowi pozycji 2.
Efekt finalny:
Kod
1. Sałata
2. Kalafior
3. Kapusta
4. Marchew
5. Ogórek
PS. Wybaczcie to łopatologiczne porównanie do warzyw, ale mam właśnie dobry humor