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