powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / INSERT INTO RDB$PROCEDURE_PARAMETERS
23 сообщений из 23, страница 1 из 1
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754080
Mh7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mh7
Гость
Нужно добавить набор из N выходных параметров в M процедур.
Корректно ли будет делать это через INSERT INTO RDB$PROCEDURE_PARAMETERS из под SYSDBA (имена процедур известны),
а не открывая каждую процедуру и компилируя её после редактирования?
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754089
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mh7,

в топку. Не работоспособно
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754091
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mh7> Корректно ли будет делать это через INSERT INTO RDB$PROCEDURE_PARAMETERS

Ответ на этот вопрос не имеет смысла, потому что даже
если взлетит - что ты потом с ними будешь делать, BLR
по их обработке (заполнению) сам напишется?

Если сверху до гланд трудно добраться -
не надо пытаться сделать это через анус.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754111
Mh7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mh7
Гость
Гаджимурадов Рустам,

да нет, конечно BLR сам не напишеться, но хоть объявить эти параметры побыстрее...
Блин, но 70 процедур!!!

Вот, попробовал, вроде добавил:


Код: 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.
create or alter procedure MDI_ADD_PARAMETER
(
  param_name varchar(31),
  param_domain varchar(31),
  proc_prefix varchar(31)
)
returns(proc varchar(50) ,stmt varchar(1024))

as
begin
 for
 select trim(r.rdb$procedure_name) from rdb$procedures r
 where r.rdb$procedure_name starting upper(:proc_prefix)
 into
   :proc
 do
   begin
     stmt = '
     insert into rdb$procedure_parameters
     (
        rdb$procedure_name,
        rdb$parameter_name,
        rdb$parameter_type,
        rdb$parameter_number,
        rdb$field_source
      )
      values
      ('''||
      :proc
      ||''',
      '''||:param_name||''',
      1,
      (select count(*) from rdb$procedure_parameters z where z.rdb$parameter_type=1 and z.rdb$procedure_name='''||:proc||'''),
      '''||:param_domain||'''
      );';
    execute statement :stmt;
    suspend;
  end
end



Вопрос вот о чем: корректно ли лезть в эту системную таблицу таким образом? Сейчас норм, а что будет после backup/restore (прям сейчас нет возможности проверить)???
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754120
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mh7Вопрос вот о чем: корректно ли лезть в эту системную таблицу таким образом?
1. Нет, не корректно. В версии >= 3.0 это даже запрещено.
2. Ты отгребешь кучу багов. Разных. Я отгребал
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754121
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mh7Блин, но 70 процедур!!!
Ну так и проальтери их скриптом. Тебе что, процессор жалко?
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754122
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы пересоздавал каждую процедуру динамическим SQL. Исходник же есть в системных таблицах.

Это если бы вообще дошел до мысли автоматизировать добавление аргументов. Скорее, дошел бы до мысли научить клиента не падать при отсутствии аргумента у процедуры.
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754131
Mh7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mh7
Гость
YuRock, спасибо!
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754132
Mh7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mh7
Гость
YuRock, "скриптом": это получить исходный текст и, пропарсив его, воткнуть в конец списка выходных параметров нужный мне???
Или меня не туда несет?
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754133
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mh7открывая каждую процедуру и компилируя её после редактирования?

"Чо?" (с)

У нормальных разработчиков процедуры (пере-)создаются скриптом, который лежит в СКВ.
Текстовые редакторы умеют массовую автозамену.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754137
Mh7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mh7
Гость
Dimitry Sibiryakov,

Я не очень-то "нормальный" разработчик:)
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754166
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mh7> да нет, конечно BLR сам не напишеться, но хоть объявить эти параметры побыстрее...

ОК, если с первого раза не получилось, попробуем со второго.
Допустим, ты все правильно сделал, объявил (добавил) - что
потом, что должно произойти, после изменения текста ХП и
его компиляции?

Mh7> Блин, но 70 процедур!!!

Как уже подсказали - автоматизируй обработку текста ХП
(если и там, где это возможно).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754236
Mh7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mh7
Гость
Гаджимурадов Рустам,

авторчто
потом, что должно произойти, после изменения текста ХП и
его компиляции?


Да ничего!!!:)
Потом я буду последовательно в редакторе открывать эти процедуры, писать код получения данных для этих параметров (ибо он не всегда одинаков), и компилировать. Но мне уже не надо их объявлять!!!:)
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754238
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mh7,

рука лицо
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754255
Mh7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mh7
Гость
Симонов Денис, объясните.
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754263
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mh7,

кстати, при всём этом геморрое с АВТОМАТИЧЕСКи создаваемыми процедурами возникает резонный вопрос - нафиг они вообще нужны?
Работал я в конторе, и для одного проекта там отчеты делались процедурами. Когда количество процедур стало около 30-40, стало ясно, что управлять этим совершенно невозможно. В результате процедурам был дан отбой, и было создано приложение, которое генерило отчеты (динамически создаваемый sql в приложении) по внешнему описанию из xml.

Допустим, пресловутые "70 процедур" - это интерфейс к insert/update/delete разных таблиц. Ну тогда эти процедуры вообще генерятся АВТОМАТИЧЕСКИ.

К слову, я вижу у вас нездоровое увлечение execute statement. Попробуйте представить, что его вообще не существует.
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754331
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mh7Я не очень-то "нормальный" разработчик:)Выгрузи их скопом в скрипт, автозамена, накатывание скрипта.
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754343
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mh7,

да чего тут объяснять. Прямая модификация системных таблиц запрещена в 3.0. В 2.5 это пропускалось, но за это расстреливать надо, ибо не факт что будет работоспособно да и вообще можно убить БД.
Нормальный путь собрать себе PSQL процедуру/функцию (или вообще на клиентской стороне), которая будет генерировать болванку скрипта для создания ХП с нужными параметрами и пустым телом процедуры.
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754357
Mh7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mh7
Гость
kdv,

Да нет у меня никаких АВТОМАТИЧЕСКИ создаваемых процедур!!!
Ещё раз: надо добавить N параметров в M процедур, смущает, что лезу в системную таблицу, "руками" не охота, всё!!!

И про "нездоровое увлечение execute statement" вообще не понял...
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754358
Mh7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mh7
Гость
Симонов Денис,

да, спасибо что ответили. У нас 2.5, но я не сторонник bad practice, так что послушаю вас. Спасибо ещё раз.
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754360
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mh7,

я же тебе рассказал про нормальный путь. Ну и к слову. В IBExpert есть возможность типовые болванки ХП делать для ISNERT/UPDATE/DELETE таблиц
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754373
Mh7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Mh7
Гость
Симонов Денис, у меня не надо создавать процедуру с пустым телом. Процедуры уже есть, с не пустым телом.
Хотелось добавить выходной параметр во все эти процедуры "автоматом", код для получения данных в этот выходной параметр я уже сам, "ручками", допишу.

Ладно, ребят, давайте закроем тему: нельзя, так нельзя, я ответ получил на свой вопрос.

Всех с Наступающим!
...
Рейтинг: 0 / 0
INSERT INTO RDB$PROCEDURE_PARAMETERS
    #39754485
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mh7Хотелось добавить выходной параметр во все эти процедуры "автоматом"
1. Открываешь эксперт.
2. Выгружаешь требуемые процедуры в скрипт
3. Любым текстовым редактором с возможностью автозамены (сам эксперт это умеет) вместо ключевой фразы "create or alter procedure" ставишь "create or alter procedure <СПИСОК ПАРАМЕТРОВ>". либо перед фразой ")returns (" ставишь свое "<СПИСОК ПАРАЕТРОВ>)returns ("
4. Скармливаешь скрипт исполнятору скриптов (эксперт это тоже умеет).
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / INSERT INTO RDB$PROCEDURE_PARAMETERS
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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