powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / изменить ХП
9 сообщений из 9, страница 1 из 1
изменить ХП
    #39035044
Katya007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно ли изменить только параметры в ХП, не меняя тела процедуры?
расширили поле в одной из таблиц. теперь нужно поменять это в ХП. но в разных базах текст одной и той же процедуры может отличаться.
...
Рейтинг: 0 / 0
изменить ХП
    #39035047
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
без перекомпиляции текста ХП это невозможно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
изменить ХП
    #39035050
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katya007можно ли
Нельзя. Обломись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
изменить ХП
    #39035092
MrCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, насколько я помню, текст ХП (rdb$procedures.rdb$procedure_source), начинающийся после ключевого слова AS, хранится отдельно от параметров (rdb$procedure_parametes). Так что формально можно собрать ALTER PROCEDURE с новым списком параметров и старым телом. Ответственность за компилябельность чудища ложится на Вас. Кроме того, подход не сработает, если исходники ХП вычищены из БД.
...
Рейтинг: 0 / 0
изменить ХП
    #39035095
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrCatТак что формально можно собрать ALTER PROCEDURE с новым списком параметров и старым телом.
мнэ, что?
да, параметры и тело хранится отдельно. и можно даже попробовать поколупать эти параметры, но ничего хорошего из этого не выйдет, потому что код процедуры с учетом этих параметров уже скомпилирован. И "приклеивать" его, как бы, некуда.
То есть, код процедуры думает, что там один тип, а при вызове процедуры туда будет передан другой тип, потому что параметры изменены.
Я уж молчу про процедуры, которые такую "модифицированную" процедуру вызывают - они и не будут подозревать, что параметры этой процедуры изменились.
Вообще идея выглядит примерно как - "есть dll с функциями, и есть интерфейс к этим функциям. Давайте только поменяем интерфейс, может заработает".
Если varchar(20) поменяли на varchar(25), может и заработает, но не на всех данных. А это, считай, что не заработает.
...
Рейтинг: 0 / 0
изменить ХП
    #39035143
MrCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я имею в виду не _BLR, а _SOURCE, текст.

Автор спрашивает, как добавить/поменять параметр в указанной процедуре в нескольких БД, при разных телах процедур. Правку метаданных не рассматриваем, остаётся DDL. Единый скрипт для всех БД сформировать нельзя (тела различаются). Писать отдельный скрипт для каждой БД - затруднительно (почему, кстати?). В этом случае мы можем сформировать DDL динамически. С указанными рисками.
...
Рейтинг: 0 / 0
изменить ХП
    #39035154
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrCatЯ имею в виду не _BLR, а _SOURCE, текст.

Зачем? После правки исходников, ты измененную ХП получишь только после перекомпиляции. Ну или рестора.
...
Рейтинг: 0 / 0
изменить ХП
    #39035166
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemarтолько после перекомпиляции. Ну или рестора.
при ресторе никакой перекомпиляции нет. Там только проверка метаданных идет, на которой можно получить разве что сообщение об их кривости.
...
Рейтинг: 0 / 0
изменить ХП
    #39035173
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvGallemarтолько после перекомпиляции. Ну или рестора.
при ресторе никакой перекомпиляции нет.
Извини,глупость сказал.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / изменить ХП
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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