Процедуры.
Сохраненные процедуры - готовые части кода, расположенные в базе данных и выполняющиеся на сервере. Что мы можем узнать про них из системных таблиц базы данных. Да, практически, все! Наснем с того, что получим список процедур.
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.
Назад |
Содержание |
Вперед