Мне нужны два курсора на разных подмножествах одной и той же исходной таблицы
Что у меня есть: У меня есть табличная переменная, содержащая два столбца Int
Declare @originalData Table (Nr Int, Count Int).
Она содержит только несколько строк, максимум около 300. Давайте иметь следующие 10 строк:
Nr Count
------------
0 1
1 6
2 0
. .
. .
7 4
8 5
9 2
Для достижения того, что я хочу, у меня есть еще одна таблица, скажем так Declare @extended Table(Id Identity, Nr Int, Count Int)
который (кроме столбца идентификаторов) вставил дополнительные строки от конца на вершину, а некоторые - от предыдущей вершины до конца. Это может выглядеть так:
Id Nr Count
-------------
1 8 5 -- 2 rows from prior end to top
2 9 2 --
3 0 1
4 1 6
5 2 0
. . .
. . .
8 7 4
9 8 5
10 9 2
11 0 1 -- 2 rows from prior top to end
12 1 6 --
Мне бы хотелось иметь два курсора, каждый из которых подмножество s в таблице @extended:
- один, включая строки, вставленные сверху через все строки, но строки вставлены до конца
Declare C1 Cursor Local Scroll for (Select Nr, Count From @extended Where Id>=3) For Update Of Count
удерживая все строки и строки, вставленные в конец, и - другую, включая строки, начинающиеся со строк, вставленных сверху, и все остальные строки , но строку, вставленную в конец, как
Declare C2 Cursor Local Scroll For (Select Top(12) Nr, Count from @extended) For Update Of Count
.
Пока все работает. Единственное, что по команде обновления Update @extended Set Count=Count+1 Where Current Of C1
возникает сообщение «Сообщение 16929 ... Курсор доступен только для чтения».
Но почему ?