Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / невидимый курсор?! / 11 сообщений из 11, страница 1 из 1
31.07.2005, 23:43
    #33193391
effenzi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невидимый курсор?!
Добрый день.

Столкнулся с проблемой, очень странной. Мне нужен доступ к курсору который я обьявляю на своем ASA сервере, но непонятно почему етот курсор изчезает после обьявления, вернее виден только в одном предложение.
К примеру:

Декларирую простой курсор

Код: plaintext
DECLARE c1 CURSOR FOR SELECT * FROM client

Открываю его

Код: plaintext
OPEN c1

и получяю ошибку -170 cursor has not been declared ! Почему??? Например, еслибы я написал их вместе

Код: plaintext
1.
DECLARE c1 CURSOR FOR SELECT * FROM client 
OPEN c1

ошибки никакой небылобы, но после я немогу подойти к этому курсору, например делая

Код: plaintext
CLOSE c1

получяю Cursor not open . Незнаю просто что и делать. Мне нужен етот курсор, штобы можно былобы быстро скролить по resultset'у в WinForms .NET .
Помогите пожалуйста, в чем здесь проблема? Зарание спасибо!
...
Рейтинг: 0 / 0
01.08.2005, 06:37
    #33193424
old_joy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невидимый курсор?!
Для начала замени звездочку явным списком полей, и возьми имя таблицы client в кавычки.
...
Рейтинг: 0 / 0
01.08.2005, 13:35
    #33194293
effenzi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невидимый курсор?!
пробовал (я многа уже разных вариантов перебрал в том числе и

Код: plaintext
1.
2.
DECLARE c1 CURSOR FOR SELECT * FROM client
OPEN c1 WITH HOLD;
CLOSE c1;

кидает ошибку Cursor not open
) тоже самое, етот курсор виден только в одном запросе, другой запрос уже невидит етова курсора, толи етот курсор стерается, толи еше что... как сделать чтобы он не стерался ? help
...
Рейтинг: 0 / 0
01.08.2005, 18:33
    #33195089
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невидимый курсор?!
Во первых, следи за орфографией!
Проверь своего клиента, у него скорее всего стоит опиция автоматически закрывать транзакцию после каждой команды. По закрытию транзакции все открытые и объявленные курсоры автоматически закрываются и забываются.
Убедись что твой клиент работает в режиме ручных транзакций и сам следи чтобы не послать прежде временно commit или rollback.
...
Рейтинг: 0 / 0
02.08.2005, 13:12
    #33196357
effenzi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невидимый курсор?!
спасибо, за ответы, извините за орфографию, я учился не в русской школе :) Я отключал похожие опции, но непомогло, with hold должен держать курсор до close или до закрытия базы, но этого непроисходит. Я отказался от этой затеи. Использую просто ADODB.RecordsetClass теперь.
...
Рейтинг: 0 / 0
02.08.2005, 17:58
    #33197557
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невидимый курсор?!
Почитай в BOL про скобки begin/end.
Серверный курсор как и все что объявляется командой declare подчиняется правилу блочной видимости. Как только ты завершаешь командный блок - сервер забывает все объявленые внутри него переменные и курсоры.
...
Рейтинг: 0 / 0
03.08.2005, 09:41
    #33198169
michael_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невидимый курсор?!
В ASA, в отличии от MS SQL и ASE курсоры живут только внутри BATH-файла или хранимой процедуры. Они убиваются автоматически, как только отработает BATH-файл или процедура, потому нет команды deallocate.

Вообще же, курсорами надо пользоваться очень дозированно и осторожно. А уж с их помощью получать данные для клиентского приложения, вообще плохой тон. Курсоры серьезно тормозят систему и жрут память. На MS SQL, например, большой курсор может просто уйти в аут.
...
Рейтинг: 0 / 0
03.08.2005, 10:47
    #33198415
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невидимый курсор?!
2_michael
Если в MSSQL добавить DECLARE CURSOR LOCAL то он тоже станет объявленным внутри батча. Ухода в аут не видел...
...
Рейтинг: 0 / 0
03.08.2005, 11:53
    #33198670
michael_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невидимый курсор?!
Crip2_michael
Если в MSSQL добавить DECLARE CURSOR LOCAL то он тоже станет объявленным внутри батча.
Согласен

Crip2_michael
Ухода в аут не видел...
Я наблюдал резкий скачок увеличения время отклика, если величина курсора перевливала через 4000-6000 записей. Например, обработка 1000 записей - 20 сек, 7000 записей - 15 мин (MS SQL 2000).

Это лишь иллюстация того, что курсоры должны использоваться в случае крайней необходимости, когда без них просто нельзя.

Кстати, на ASA курсоры довольно шустрые по сравнению с MS и ASE. Но и они заведомо медленней обработают таблицу, чем обычные SELECT и UPDATE.
...
Рейтинг: 0 / 0
03.08.2005, 16:45
    #33199823
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невидимый курсор?!
michael_В ASA, в отличии от MS SQL и ASE курсоры живут только внутри BATH-файла или хранимой процедуры.
BATH-файл это банный файл? Курсоры в нем отмываются от грязи наверное? :)
Во первых, batch - что переводится на русский как "пачка". Во вторых, команды серверу БД никогда не даются в batch-файлах, они могут быть сгрупированы в batch, но к файлам это отношения не имеет.
...
Рейтинг: 0 / 0
03.08.2005, 17:10
    #33199939
michael_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
невидимый курсор?!
White Owl michael_В ASA, в отличии от MS SQL и ASE курсоры живут только внутри BATH-файла или хранимой процедуры.
BATH-файл это банный файл? Курсоры в нем отмываются от грязи наверное? :)

И правда :). Виноват.
White Owl
Во первых, batch - что переводится на русский как "пачка". Во вторых, команды серверу БД никогда не даются в batch-файлах, они могут быть сгрупированы в batch, но к файлам это отношения не имеет.
В принципе согласен. Но в некоторых книжках по старинке именно так и называется. Да и лектор в Sybase говорил именно "batch-файл", а не "batch".
Но Вы, наверное, ближе к истине.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / невидимый курсор?! / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]