DECLARE EXTERNAL FUNCTION
-Eingabeparameter
Die Eingabeparameter der Funktion folgen dem Namen der Funktion und werden durch Kommas getrennt.Für jeden Parameter ist ein SQL-Datentyp angegeben.Arrays können nicht als Funktionsparameter verwendet werden.Zusätzlich zu den SQL-Typen steht der Typ CSTRING
zur Angabe eines nullterminierten Strings mit einer maximalen Länge von LENGTH
Bytes zur Verfügung.Es gibt mehrere Mechanismen, um einen Parameter von der Firebird-Engine an eine externe Funktion zu übergeben. Jeder dieser Mechanismen wird unten diskutiert.
Standardmäßig werden Eingabeparameter per Referenz übergeben.Es gibt keine separate Klausel, die explizit angibt, dass Parameter als Referenz übergeben werden.
Wenn ein NULL
-Wert als Referenz übergeben wird, wird dieser in das Äquivalent von Null umgewandelt, zum Beispiel eine Zahl
angegeben wird, wird bei der Übergabe von `0
’ oder eine leere Zeichenfolge (“''
”).Wenn nach einem Parameter das Schlüsselwort `NULLNULL
-Werten der Nullzeiger an die externe Funktion übergeben.
Note
|
Das Deklarieren einer Funktion mit dem Schlüsselwort |
Wenn BY DESCRIPTOR
angegeben ist, wird der Eingabeparameter vom Deskriptor übergeben.In diesem Fall erhält der UDF-Parameter einen Zeiger auf eine interne Struktur, die als Deskriptor bekannt ist.Der Deskriptor enthält Informationen über Datentyp, Untertyp, Genauigkeit, Zeichensatz und Kollation, Skalierung, einen Zeiger auf die Daten selbst und einige Flags, einschließlich des NULL
-Indikators.Diese Deklaration funktioniert nur, wenn die externe Funktion mit einem Handle geschrieben wird.
Warning
|
Wenn ein Funktionsparameter per Deskriptor übergeben wird, wird der übergebene Wert nicht in den deklarierten Datentyp umgewandelt. |
Die Klausel BY SCALAR_ARRAY
wird verwendet, wenn Arrays als Eingabeparameter übergeben werden.Im Gegensatz zu anderen Typen können Sie kein Array aus einer UDF zurückgeben.