Процедури

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

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