Системные таблицы InterBase
Страница 8. Процедуры



Процедуры

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

 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.

 
« Предыдущая статья   Следующая статья »