powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA , open client, cursor
6 сообщений из 6, страница 1 из 1
ASA , open client, cursor
    #37888292
Сергей08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем
и заранее спасибо :)

В процедуре по извлечению DDL из репсервера ипользуется курсор.
Open client / ASE 15.02 всё работает.

Попытался перенести эту процедуру на ASA 11.0.0.1264 (embedded RSSD) и курсоры перестали работать.
Выяснил , что как только встречается Update или Insert, то курсор прекращает обрабатыватся. В моём случае (см. ниже) обрабатывается только одна строка.

Пока предполагаю , что не всё работает под Open Client в ASA ?
Планирую проверить под ODBC.... , хотя мне очень не хотелось бы использовать ODBC

Буду также благодарен, если кто нибудь посоветует проверенную процедуру для извлечения DDL из embedded RSSD
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
 declare config_curs cursor for
 	select A.objid, A.rcl_head, A.rcl_tail,
 	       B.objid, B.optionname, B.charvalue
 	    from #rsconn A, rs_config B
 	    where A.objid *= B.objid
 	    order by B.optionname
        for read only

    open config_curs
    fetch config_curs into
	@cA_objid, @c_head, @c_tail, @cB_objid, @c_name, @c_value

    while (@@sqlstatus = 0)
    begin
 	select @pA_objid = @cA_objid,
	       @pB_objid = @cB_objid,
  	       @p_head = @c_head,
 	       @p_tail = @c_tail,
   	       @p_name = @c_name,
  	       @p_value = @c_value,
  	       @cmd = NULL

	while (@pA_objid = @cA_objid) and (@@sqlstatus = 0)
 	begin
 	    if (@c_name != NULL )
		select @cmd = @cmd + @lf + @tab + "set '" + @c_name
			    + "' to '" + @c_value + "'"

	    fetch config_curs into
		@cA_objid, @c_head, @c_tail, @cB_objid,@c_name,@c_value
	end

	-- Construnct RCL.
	select @cmd = @p_head + @cmd + @p_tail + @lf + "go" + @lf + @lf
	update #rsconn set rcl_cmd = @cmd where objid = @pA_objid     -----!!!!!!!!!
     end

    close config_curs
     deallocate cursor config_curs
...
Рейтинг: 0 / 0
ASA , open client, cursor
    #37888568
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей08Пока предполагаю , что не всё работает под Open Client в ASA ? Да. OC это интерфейс ASE и под SA его почти портировали.
Хотя в приведеном коде я не вижу OC вообще. Вижу только кусок хранимой процедуры написанной на Transact SQL. Который тоже не является родным для SA...

Сергей08Планирую проверить под ODBC.... , хотя мне очень не хотелось бы использовать ODBCЗря не хочется. ODBC для SA очень даже надежно работает, за полтора десятка лет оно у меня ни разу не глючило.

Сергей08Выяснил , что как только встречается Update или Insert, то курсор прекращает обрабатыватся. В моём случае (см. ниже) обрабатывается только одна строка.Ты обновляешь ту-же таблицу на которой построен курсор, при этом курсор объявлен как read only. Да все это еще и на локальной временной таблице... ммм.... С описываемым глюком я еще не сталкивался, но я и не использую TSQL в SA...
Перепеши процедуру на WatcomSQL и станет легче жить. (хотя потом привыкнув к WSQL будешь плеваться от TSQL, но это нормально).

Сергей08Буду также благодарен, если кто нибудь посоветует проверенную процедуру для извлечения DDL из embedded RSSD
Вообще, для извлечения DDL из SA есть специальная утилита, называется dbunload. Но она не работает на времянках естественно.
...
Рейтинг: 0 / 0
ASA , open client, cursor
    #37888808
Сергей08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за исчерпывающий и быстрый ответ. Вроде понял где копать.
Но на случай если не понял , то всё таки отвечу :)

White OwlСергей08Пока предполагаю , что не всё работает под Open Client в ASA ? Да. OC это интерфейс ASE и под SA его почти портировали.
Хотя в приведеном коде я не вижу OC вообще. Вижу только кусок хранимой процедуры написанной на Transact SQL. Который тоже не является родным для SA...

Для запуска процедуры я ипользую утилиту isql, которая использует OC для конекта.

White OwlСергей08Выяснил , что как только встречается Update или Insert, то курсор прекращает обрабатыватся. В моём случае (см. ниже) обрабатывается только одна строка.Ты обновляешь ту-же таблицу на которой построен курсор, при этом курсор объявлен как read only. Да все это еще и на локальной временной таблице... ммм.... С описываемым глюком я еще не сталкивался, но я и не использую TSQL в SA...
Перепеши процедуру на WatcomSQL и станет легче жить. (хотя потом привыкнув к WSQL будешь плеваться от TSQL, но это нормально).

Я пробовал создать ещё одну временную таблицу и по ней запускать курсор. Не помогло. Тупо обрывается ...
SA используется только для системной базы репсервера. Хотя , сейчас, начал работать и с Sybase IQ и иам тоже SA используется!
Наверное я таки обречён поближе познакомится с SA и WCOM

White OwlСергей08Буду также благодарен, если кто нибудь посоветует проверенную процедуру для извлечения DDL из embedded RSSD
Вообще, для извлечения DDL из SA есть специальная утилита, называется dbunload. Но она не работает на времянках естественно.
Имеются ввиду не обьекты SA а обьекты репсервера.
...
Рейтинг: 0 / 0
ASA , open client, cursor
    #37889289
...
Рейтинг: 0 / 0
ASA , open client, cursor
    #37889414
Сергей08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл парольСергей08,

http://infocenter.sybase.com/help/topic/com.sybase.help.sqlanywhere.11.0.1/dbreference_en11/open-statement.html

WITH HOLD clause ....


Cпасибо !! Это оно.
Особенно спасибо , что не потерял веру в Sybase
А то как то совсем пошло. Бац и курсор на выход!
...
Рейтинг: 0 / 0
ASA , open client, cursor
    #37889665
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей08Для запуска процедуры я ипользую утилиту isql, которая использует OC для конекта. Ну тогда глюков должно быть по минимуму.
У OC-SA главная проблема это типы данных. OC следует тем же соглашениям по типам что используются в ASE, а они не всегда совпадают с SA.
Но просто "запустить процедуру" должно проходить нормально.

Сергей08SA используется только для системной базы репсервера. Хотя , сейчас, начал работать и с Sybase IQ и иам тоже SA используется!
Наверное я таки обречён поближе познакомится с SA и WCOMВ IQ используется не SA вообще-то, а только парсер WatcomSQL. Но да, W-SQL знать надо, самый вкусный SQL диалект из всех которые я видел.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA , open client, cursor
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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