Сохраненные Процедуры

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

Для более подробного ознакомления с этими и другими возможностями пожалуйста, рассмотрите примеры.