|
|
|
Создание курсора, почему @@sqlstatus = 2 ASE 12.5.4
|
|||
|---|---|---|---|
|
#18+
Доброго дня! Такая ситуация в процедуре: 1. создаю виртуальную таблицу 2. создаю курсор1 на запрос других таблиц 2.1. открываю его 2.2. считываю из курсора и записываю в свою вирт таблицу данные 3. закрываю курсор1 4. делаю деаллокейт курсор1 5. создаю курсор2 на основе моей вирт таблицы 6. проверяю @@sqlstatus и он равен 2 7. открываю курсор2 8. проверяю @@sqlstatus и он опять равен 2 вобщем прочитать курсор2 я не могу.. :( Подскажите плиз почему @@sqlstatus = 2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2009, 10:51 |
|
||
|
Создание курсора, почему @@sqlstatus = 2 ASE 12.5.4
|
|||
|---|---|---|---|
|
#18+
есть подозрение что при проходе по первому курсору и упираясь в конец, @@sqlstatus выставляется в 2, обозначая конец данных, и затем в этом состоянии находится... но почему он не обнуляется при закрытии курсора или создании нового???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2009, 11:33 |
|
||
|
Создание курсора, почему @@sqlstatus = 2 ASE 12.5.4
|
|||
|---|---|---|---|
|
#18+
Вопрос конечно банальный, но все-таки - данные-то есть в вашей вирутальной таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2009, 12:13 |
|
||
|
Создание курсора, почему @@sqlstatus = 2 ASE 12.5.4
|
|||
|---|---|---|---|
|
#18+
Mikle83Вопрос конечно банальный, но все-таки - данные-то есть в вашей вирутальной таблице? есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2009, 12:48 |
|
||
|
Создание курсора, почему @@sqlstatus = 2 ASE 12.5.4
|
|||
|---|---|---|---|
|
#18+
метод тупой но если попробовать перед закрытием первого курсора считать первую его запись, т.е. чтобы статус был <>2 после окончания работы с курсором? Таким образом выявим кто давит на статус, то ли первый курсор (если все заработает), то ли второй как-то (если все продолжит не работать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2009, 12:59 |
|
||
|
Создание курсора, почему @@sqlstatus = 2 ASE 12.5.4
|
|||
|---|---|---|---|
|
#18+
Mikle83метод тупой но если попробовать перед закрытием первого курсора считать первую его запись, т.е. чтобы статус был <>2 после окончания работы с курсором? Таким образом выявим кто давит на статус, то ли первый курсор (если все заработает), то ли второй как-то (если все продолжит не работать). помоему фича со скроллингом курсора появилась только в 15-ой асешке... или как-то можно??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2009, 17:26 |
|
||
|
Создание курсора, почему @@sqlstatus = 2 ASE 12.5.4
|
|||
|---|---|---|---|
|
#18+
А после открытия второго курсора FETCH делали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2009, 07:22 |
|
||
|
Создание курсора, почему @@sqlstatus = 2 ASE 12.5.4
|
|||
|---|---|---|---|
|
#18+
W357А после открытия второго курсора FETCH делали? если делать после открытия второго курсора фетч, то он делается и статус переводится в ноль. но я изначально делал все как в инструкции while @@sqlstatus = 0 begin fetch cur into @a, @b ... end и при таком варианте у меня последняя запись дублировалась, вставил проверку на sqlstatus перед вставкой и обошел дублирование, но второй курсор у меня сразу был со статусом ноль и это все условие уже не срабатывало. в итоге сделал иначе - запрос на кол-во строк в курсоре, затем тот же while, но с заданым количеством циклов и все заработало как надо. знаю что @@sqlstatus надо бы все равно проверять, но... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2009, 17:55 |
|
||
|
Создание курсора, почему @@sqlstatus = 2 ASE 12.5.4
|
|||
|---|---|---|---|
|
#18+
Imperousно я изначально делал все как в инструкцииЛибо неправильно читаешь, либо неправильная инструкция. @@sqlstatus хранит в себе код завершения последней команды работавшей с данными. Если ты начинаешь while цикл с проверки на @@sqlstatus убедись что перед приходом в этот цикл у тебя переменная встала в подходящее для входа в цикл значение. Какой язык в школе учил? Бейсик? Вот тебе пример на Бейсике: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Вот в T-SQL все тоже самое. И кстати да, открытие курсора не является работой с данными а значит не изменяет @@sqlstatus, а fetch - уже является и изменяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2009, 18:08 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=36358113&tid=2010807]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 272ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...