powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 8.02 PASSTHROUGH
4 сообщений из 4, страница 1 из 1
ASA 8.02 PASSTHROUGH
    #32595317
Victor Am
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASA 8.02
Отсылаем обновление на удаленную базу данных используя PASSTHROUGH, причем это операция выполнялась неоднократно, в скрипте выполняется
alter procedure ...,
при отправке одной и той же процедуры, происходит получение на удаленной БД, она изменяется, но если выполнить ее, выполняется без ошибок, но ничего не возвращает,
если зайти в Edit данной процедуры и выполнить Save Procedure, данные начинают возвращаться, работоспособность восстанавливается,
А для других процедур перекомпиляция не требуется.

Какой командой перекомпилить процедуру программно, не ездить же по распределенной сети и на каждой удаленной БД вручную компилить?
Может я где то пропустил правила именования процедур и (или) присутстрия в них определенных символов, для PASSTHROUGH ?
а, наименование процедуры - ec_GetIDAssortmentGroup
...
Рейтинг: 0 / 0
ASA 8.02 PASSTHROUGH
    #32595513
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одним из возможных вариантов несрабатывания ХП может быть использование в ней конструкции "SELECT *". В случае любых изменений полей у таблиц и представлений, участвующих в запросе, ХП не будет автоматически перекомпилированна ASA и соотвествующе начнет неправильно отрабатываться. Поэтому везде (кроме ISQL для своих нужд) рекомендуется не использовать звездочку и явно перечислять все поля.

Перекомпилить же процедуру можно довольно просто:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
BEGIN
  DECLARE @Source long varchar;

  SELECT Source
  INTO @Source
  FROM SysProcedure
  WHERE Proc_Name = 'ec_GetIDAssortmentGroup';

  IF @Source IS NOT NULL
  THEN
    EXECUTE IMMEDIATE 'ALTER ' || SubStr(@Script,  8 );
  END IF;
END;
...
Рейтинг: 0 / 0
ASA 8.02 PASSTHROUGH
    #32595676
Victor Am
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Будем пробовать, о положительных результатах надеюсь сообщу.
Спасибо
...
Рейтинг: 0 / 0
ASA 8.02 PASSTHROUGH
    #32598721
Victor Am
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В процедуре были конструкции такого типа

Код: plaintext
select @column1 = column1 from ....
изменили на:

Код: plaintext
select column1 into @column1 from ....

все нормализовалось.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 8.02 PASSTHROUGH
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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