Заметки о системных таблицах InterBase


Процедуры.


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

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.



Содержание раздела