Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / А можно как-то проверить открыт ли объявленный курсор? / 7 сообщений из 7, страница 1 из 1
12.08.2008, 15:25
    #35483340
yuriyking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можно как-то проверить открыт ли объявленный курсор?
А можно как-то проверить открыт ли объявленный курсор?
z/OS, DB2 UDB for V8, CICS TS 3.2, Enterprise COBOL 3.4, статический SQL.

Спасибо.
...
Рейтинг: 0 / 0
13.08.2008, 22:21
    #35486279
mustaccio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можно как-то проверить открыт ли объявленный курсор?
Наверное, можно сделать FETCH и поймать exception.
...
Рейтинг: 0 / 0
13.08.2008, 23:56
    #35486323
yuriyking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можно как-то проверить открыт ли объявленный курсор?
При этом изменится позиция курсора.
Не подходит. :(
...
Рейтинг: 0 / 0
14.08.2008, 06:51
    #35486409
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можно как-то проверить открыт ли объявленный курсор?
Непонятно, откуда взялся такой вопрос. Как бы вы забыли, открыли ли курсор, и пытаетесь вспомнить. Обычно в программе этот факт известен.

Далее - что вы будете делать, выяснив, открыт ли он? Используете этот факт в условном операторе, "если курсор открыт, тогда делай то, иначе делай это"? С exception'ами работают немного по-другому, выполняют "делай то", а "делай это" выполняют, если поймали exception.
...
Рейтинг: 0 / 0
14.08.2008, 13:31
    #35487450
yuriyking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можно как-то проверить открыт ли объявленный курсор?
Мне это нужно для такого конкретного случая: если возникает ошибка при работе с курсором, я хочу в обработчике ошибок попытаться курсор закрыть. При этом может случиться, что курсор не окрыт (например, он вообще не открылся), тогда я получаю ошибку в обработчике ошибок, что может вести к зацикливанию.
Понятно, что при закрытии курсора может произойти и какая-то другая ошибка. В этом случае я делаю ABEND и пусть CICS сам разбирается с этим курсором.
Но ситуацию с попыткой закрытия не открытого курсора хотелось бы отлавливать явно.

P.S. В Коболе ситуация с exception'ами довольно напряжённая: нету там их.
...
Рейтинг: 0 / 0
14.08.2008, 14:49
    #35487713
Serg0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можно как-то проверить открыт ли объявленный курсор?
Думаю, что аналоги этих RPG конструкций для Embeded SQL, в Коболе есть?

C/EXEC SQL WHENEVER SQLERROR GOTO LERR
C/END-EXEC
C/EXEC SQL WHENEVER NOT FOUND GOTO LEOF
C/END-EXEC

даже если курсор не один, конкретное место в программе можно идентифицировать по переменной.

Можно наверное и содержание SQLCA анализировать в обработчике ошибок, но насколько это окажется полезным, я не не уверен.
...
Рейтинг: 0 / 0
14.08.2008, 15:42
    #35487916
yuriyking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можно как-то проверить открыт ли объявленный курсор?
C/EXEC SQL WHENEVER SQLERROR GOTO LERR
C/END-EXEC
C/EXEC SQL WHENEVER NOT FOUND GOTO LEOF
C/END-EXEC

Путём хитрых манипуляций я, конечно, могу "даже если курсор не один, конкретное место в программе можно идентифицировать по переменной".
Но вернуться к тому месту в программе, где возникла ошибка, уже не смогу.
А это не соответствует нашей "генеральной линии".

Сейчас у меня это дело реализовано так: у меня есть две секции: close и tryClose.
Первая закрывает курсор и при ошибке вызывает обработчик SQL-ошибок.
Вторая закрывает курсор и игнорирует все ошибки.
В обработчике SQL-ошибок вызывается tryClose.

Но очень хотелось бы уметь отлавливать попытки закрыть неоткрытый курсор без вызова обработчика ошибок.

Ну и глобально:
Я знаю как можо реализовать мои задачи без проверки открыт ли курсор.
Но по ряду не мной наложенных "краевых условий" эти задачи можно решить гораздо более проще, умея проверять открыт ли курсор.
Поэтому мой вопрос сформулирован так: "А можно как-то проверить открыт ли объявленный курсор?",
а не так "Как можно решить мои задачи без проверки открыт ли объявленный курсор?"

Всем спасибо.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / А можно как-то проверить открыт ли объявленный курсор? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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