Firebird підтримує два механізми, для визову збережених процедур.
execute procedure MyProc(?,?)
В цьому прикладі процедура очікує отримати дані, через вхідні параметри і якщо є вихідні параметри, повернути їх після виконання в змінні, які визначені як один набір даних.
select * from MyProc(?,?)
В цьому прикладі процедура буде формувати стільки результатів, скільки може забезпечити процедура.
Програми типу Microsoft Excel і т.п, при виклику процедури використовують слідуючий формат:
{[? =] Call MyProc (?,?)}.
Firebird ODBC драйвер самостійно визначає, який виклик використовувати,
для виконання процедури, в залежності від того, как була створена
процедура. Ключове слово SUSPEND в тілі процедури виконує дію
перемикача.
Розглянемо більш детально на прикладах.
Приклад 1
create procedure TEST
as
begin
end
Ця процедура немає ключового слова SUSPEND. Firebird ODBC драйвер
буде виконувати процедуру як
execute procedure TEST
Приклад 2
create procedure "ALL_LANGS"
returns ("CODE" varchar(5),
"GRADE" varchar(5),
"COUNTRY" varchar(15),
"LANG" varchar(15))
as
BEGIN
"LANG" = null;
FOR SELECT job_code, job_grade, job_country FROM job
INTO :code, :grade, :country
DO
BEGIN
FOR SELECT languages FROM show_langs(:code, :grade, :country)
INTO :lang
DO
SUSPEND;
/* Put nice separators between rows */
code = '=====';
grade = '=====';
country = '===============';
lang = '==============';
SUSPEND;
END
END
Ця процедура має ключові слова SUSPEND. Firebird ODBC драйвер
буде виконувати процедуру як
select * from ALL_LANGS
Для більш детального знайомства з цими і іншими можливостями будьласка, розгляньте приклади.