Firebird Documentation IndexFirebird ODBC/JDBC-Treiber-HandbuchEntwickeln mit dem Firebird ODBC/JDBC-Treiber → Gespeicherte Prozeduren
Firebird Home Firebird Home Zurück: CursorFirebird Documentation IndexNach oben: Entwickeln mit dem Firebird ODBC/JDBC-TreiberWeiter: ARRAY-Datentypen

Gespeicherte Prozeduren

In Firebird können wir zwei Arten von gespeicherten Prozeduren haben, bekannt als ausführbare und auswählbar (abfragbar). Beide Typen können Eingabeparameter und Rückgabewerte verwenden, unterscheiden sich jedoch sowohl in der Schreibweise als auch im Aufrufmechanismus.

In diesem Beispiel haben wir eine auswählbare Prozedur, von der wir erwarten, basierend auf den Eingabeparametern eine Menge von null oder mehr Zeilen zu erhalten:

select * from MyProc(?,?)
      

Microsoft Excel und einige andere Anwendungen verwenden diese Anweisung, um eine gespeicherte Prozedur aufzurufen:

{[? =] Call MyProc (?,?)}.
      

Der Firebird ODBC/JDBC-Treiber bestimmt aus den Metadaten der Firebird-Engine, welcher Aufruf beim Ausführen einer gespeicherten Prozedur verwendet werden soll. Firebird markiert eine Prozedur als 'ausführbar' oder 'auswählbar' entsprechend der Anzahl der SUSPEND-Anweisungen im zusammengesetzten (BLR) Code ihrer Definition. Für ein triviales Beispiel:

create procedure TEST
  as
    begin
    end
      

Da die Prozedur über keine SUSPEND-Anweisungen verfügt, kann der ODBC-Treiber den Aufruf als execute procedure TEST weitergeben.

Für dieses Verfahren:

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
      

Der BLR-Code für die gespeicherte Prozedur enthält mehr als null SUSPEND-Anweisungen, sodass der ODBC-Treiber select * from "ALL_LANGS" verwendet.

Zurück: CursorFirebird Documentation IndexNach oben: Entwickeln mit dem Firebird ODBC/JDBC-TreiberWeiter: ARRAY-Datentypen
Firebird Documentation IndexFirebird ODBC/JDBC-Treiber-HandbuchEntwickeln mit dem Firebird ODBC/JDBC-Treiber → Gespeicherte Prozeduren