Процедуры.

Сохраненные процедуры - готовые части кода, расположенные в базе данных и выполняющиеся на сервере. Что мы можем узнать про них из системных таблиц базы данных. Да, практически, все! Наснем с того, что получим список процедур.

  select rdb$procedure_name
  from rdb$procedures
  where rdb$system_flag = 0;

Все процедуры и основные их параметры содержатся в таблице rdb$procedures. Попробуем узнать побольше о какой-либо процедуре.

  select RDB$PROCEDURE_INPUTS, RDB$PROCEDURE_OUTPUTS,
  RDB$PROCEDURE_SOURCE, RDB$OWNER_NAME
  from rdb$procedures
  where rdb$procedure_name = "DEPT_BUDGET";

Показанный выше SQL-запрос вернет количество входных и выходных параметров, исходный текст тела процедуры и имя пользователя, создавшего процедуру.

Попробуем узнать про входные и выходные параметры подробнее.

   select a.RDB$PARAMETER_NAME, a.RDB$PARAMETER_NUMBER,
     a.RDB$PARAMETER_TYPE, b.RDB$VALIDATION_SOURCE, b.RDB$COMPUTED_SOURCE,
     b.RDB$DEFAULT_SOURCE, b.RDB$FIELD_LENGTH,
     b.RDB$FIELD_SCALE, b.RDB$FIELD_TYPE, b.RDB$FIELD_SUB_TYPE, b.RDB$NULL_FLAG
  from RDB$PROCEDURE_PARAMETERS a, RDB$FIELDS b
  where (a.RDB$FIELD_SOURCE=b.RDB$FIELD_NAME) and
        (a.RDB$PROCEDURE_NAME="DEPT_BUDGET")
  order by a.RDB$PARAMETER_TYPE, a.RDB$PARAMETER_NUMBER;

Этот запрос связывает две таблицы RDB$PROCEDURE_PARAMETERS и RDB$FIELDS и возвращает имя параметра, номер параметра среди параметров одного типа, тип параметра (0-входной, 1-выходной), а далее уже знакомые поля из таблицы RDB$FIELDS.

Назад | Содержание | Вперед