Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
24.08.2015, 17:17
|
|||
---|---|---|---|
|
|||
изменить ХП |
|||
#18+
можно ли изменить только параметры в ХП, не меняя тела процедуры? расширили поле в одной из таблиц. теперь нужно поменять это в ХП. но в разных базах текст одной и той же процедуры может отличаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.08.2015, 17:19
|
|||
---|---|---|---|
|
|||
изменить ХП |
|||
#18+
без перекомпиляции текста ХП это невозможно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.08.2015, 17:21
|
|||
---|---|---|---|
|
|||
изменить ХП |
|||
#18+
Katya007можно ли Нельзя. Обломись. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.08.2015, 18:16
|
|||
---|---|---|---|
|
|||
изменить ХП |
|||
#18+
Ну, насколько я помню, текст ХП (rdb$procedures.rdb$procedure_source), начинающийся после ключевого слова AS, хранится отдельно от параметров (rdb$procedure_parametes). Так что формально можно собрать ALTER PROCEDURE с новым списком параметров и старым телом. Ответственность за компилябельность чудища ложится на Вас. Кроме того, подход не сработает, если исходники ХП вычищены из БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.08.2015, 18:24
|
|||
---|---|---|---|
изменить ХП |
|||
#18+
MrCatТак что формально можно собрать ALTER PROCEDURE с новым списком параметров и старым телом. мнэ, что? да, параметры и тело хранится отдельно. и можно даже попробовать поколупать эти параметры, но ничего хорошего из этого не выйдет, потому что код процедуры с учетом этих параметров уже скомпилирован. И "приклеивать" его, как бы, некуда. То есть, код процедуры думает, что там один тип, а при вызове процедуры туда будет передан другой тип, потому что параметры изменены. Я уж молчу про процедуры, которые такую "модифицированную" процедуру вызывают - они и не будут подозревать, что параметры этой процедуры изменились. Вообще идея выглядит примерно как - "есть dll с функциями, и есть интерфейс к этим функциям. Давайте только поменяем интерфейс, может заработает". Если varchar(20) поменяли на varchar(25), может и заработает, но не на всех данных. А это, считай, что не заработает. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.08.2015, 19:24
|
|||
---|---|---|---|
|
|||
изменить ХП |
|||
#18+
Я имею в виду не _BLR, а _SOURCE, текст. Автор спрашивает, как добавить/поменять параметр в указанной процедуре в нескольких БД, при разных телах процедур. Правку метаданных не рассматриваем, остаётся DDL. Единый скрипт для всех БД сформировать нельзя (тела различаются). Писать отдельный скрипт для каждой БД - затруднительно (почему, кстати?). В этом случае мы можем сформировать DDL динамически. С указанными рисками. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.08.2015, 19:57
|
|||
---|---|---|---|
изменить ХП |
|||
#18+
MrCatЯ имею в виду не _BLR, а _SOURCE, текст. Зачем? После правки исходников, ты измененную ХП получишь только после перекомпиляции. Ну или рестора. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.08.2015, 20:29
|
|||
---|---|---|---|
изменить ХП |
|||
#18+
Gallemarтолько после перекомпиляции. Ну или рестора. при ресторе никакой перекомпиляции нет. Там только проверка метаданных идет, на которой можно получить разве что сообщение об их кривости. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=40&tablet=1&tid=1562661]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 146ms |
0 / 0 |