FirebirdSQL logo

Ein 'BLOB FILTER' ist ein Datenbankobjekt, das ein besonderer Typ einer externen Funktion ist, mit dem einzigen Zweck, ein 'BLOB'-Objekt in einem Format zu übernehmen und dieses in ein anderes Format umzuwandeln.Die Formate der BLOB-Objekte werden mit benutzerdefinierten BLOB-Subtypen spezifiziert.

Externe Funktionen zum Konvertieren von 'BLOB'-Typen werden in dynamischen Bibliotheken gespeichert und bei Bedarf geladen.

Weitere Informationen zu 'BLOB'-Subtypen finden Sie unter Binärdatentypen.

DECLARE FILTER

Verwendet für

Deklarieren eines 'BLOB'-Filters für die Datenbank

Verfügbar in

DSQL, ESQL

Syntax
DECLARE FILTER filtername
  INPUT_TYPE <sub_type> OUTPUT_TYPE <sub_type>
  ENTRY_POINT 'function_name' MODULE_NAME 'library_name'

<sub_type> ::= number | <mnemonic>

<mnemonic> ::=
    BINARY | TEXT | BLR | ACL | RANGES
  | SUMMARY | FORMAT | TRANSACTION_DESCRIPTION
  | EXTERNAL_FILE_DESCRIPTION | user_defined
Table 1. DECLARE FILTER-Anweisungsparameter
Parameter Beschreibung

filtername

Filtername in der Datenbank.Er kann aus bis zu 63 Zeichen bestehen.Es muss nicht der gleiche Name sein wie der Name, der über ENTRY_POINT aus der Filterbibliothek exportiert wurde.

sub_type

BLOB-Untertyp

number

BLOB-Untertypnummer (muss negativ sein)

mnemonic

'BLOB'-Untertyp mnemonischer Name`

function_name

Der exportierte Name (Einstiegspunkt) der Funktion

library_name

Der Name des Moduls, in dem sich der Filter befindet

user_defined

Benutzerdefinierter mnemonischer Name des 'BLOB'-Untertyps

Die Anweisung DECLARE FILTER stellt der Datenbank einen BLOB-Filter zur Verfügung.Der Name des 'BLOB'-Filters muss unter den Namen der 'BLOB'-Filter eindeutig sein.

docnext count = 7

Angeben der Untertypen

Die Untertypen können als Untertypnummer oder als Untertyp-Mnemonikname angegeben werden.Benutzerdefinierte Untertypen müssen durch negative Zahlen (von -1 bis -32.768) dargestellt werden.Ein Versuch, mehr als einen 'BLOB'-Filter mit derselben Kombination der Eingabe- und Ausgabetypen zu deklarieren, schlägt mit einem Fehler fehl.

INPUT_TYPE

Klausel, die den BLOB-Subtyp des zu konvertierenden Objekts definiert

OUTPUT_TYPE

-Klausel, die den 'BLOB'-Untertyp des zu erstellenden Objekts definiert.

Note

Mnemonische Namen können für benutzerdefinierte 'BLOB'-Subtypen definiert und manuell in die Systemtabelle 'RDB$TYPES'-Systemtabelle eingefügt werden:

INSERT INTO RDB$TYPES (RDB$FIELD_NAME, RDB$TYPE, RDB$TYPE_NAME)
VALUES ('RDB$FIELD_SUB_TYPE', -33, 'MIDI');

Nachdem die Transaktion festgeschrieben wurde, können die mnemonischen Namen in Deklarationen verwendet werden, wenn Sie neue Filter erstellen.

Der Wert der Spalte RDB$FIELD_NAME muss immer 'RDB$FIELD_SUB_TYPE' sein.Wenn mnemonische Namen in Großbuchstaben definiert wurden, können sie bei der Deklaration eines Filters ohne Beachtung der Groß-/Kleinschreibung und ohne Anführungszeichen verwendet werden, wobei die Regeln für andere Objektnamen beachtet werden.

Warnung

Im Allgemeinen sind die Systemtabellen von Benutzern nicht beschreibbar.Das Einfügen von benutzerdefinierten Typen in RDB$TYPES ist jedoch weiterhin möglich, wenn der Benutzer Administrator ist oder das Systemprivileg CREATE_USER_TYPES besitzt.

Parameter

ENTRY_POINT

Klausel, die den Namen des Einstiegspunkts (den Namen der importierten Funktion) im Modul definiert.

MODULE_NAME

Die Klausel, die den Namen des Moduls definiert, in dem sich die exportierte Funktion befindet.Standardmäßig müssen sich Module im UDF-Ordner des Stammverzeichnisses auf dem Server befinden.Der Parameter UDFAccess in firebird.conf ermöglicht das Bearbeiten von Zugriffsbeschränkungen auf Filterbibliotheken.

Jeder mit der Datenbank verbundene Benutzer kann einen BLOB-Filter deklarieren.

Wer kann einen 'BLOB'-Filter erstellen?

Die DECLARE FILTER-Anweisung kann ausgeführt werden durch:

Der Benutzer, der die Anweisung DECLARE FILTER ausführt, wird Eigentümer des Filters.

Beispiele für DECLARE FILTER

  1. Erstellen eines 'BLOB'-Filters mit Untertypnummern.

    DECLARE FILTER DESC_FILTER
      INPUT_TYPE 1
      OUTPUT_TYPE -4
      ENTRY_POINT 'desc_filter'
      MODULE_NAME 'FILTERLIB';
  2. Erstellen eines 'BLOB'-Filters unter Verwendung von mnemonischen Subtypnamen.

    DECLARE FILTER FUNNEL
      INPUT_TYPE blr OUTPUT_TYPE text
      ENTRY_POINT 'blr2asc' MODULE_NAME 'myfilterlib';

DROP FILTER

Verwendet für

Entfernen einer 'BLOB'-Filterdeklaration aus der Datenbank

Verfügbar in

DSQL, ESQL

Syntax
DROP FILTER filtername
Table 1. DROP FILTER-Anweisungsparameter
Parameter Beschreibung

filtername

Filtername in der Datenbank

Die DROP FILTER-Anweisung entfernt die Deklaration eines BLOB-Filters aus der Datenbank.Das Entfernen eines 'BLOB'-Filters aus einer Datenbank macht ihn für die Verwendung in dieser Datenbank nicht verfügbar.Die dynamische Bibliothek, in der sich die Konvertierungsfunktion befindet, bleibt intakt und das Entfernen aus einer Datenbank wirkt sich nicht auf andere Datenbanken aus, in denen noch derselbe 'BLOB'-Filter deklariert ist.

Wer kann einen 'BLOB'-Filter fallen lassen?

Die DROP FILTER-Anweisung kann ausgeführt werden durch:

  • Administratoren

  • Der Besitzer des Filters

  • Benutzer mit der Berechtigung DROP ANY FILTER

DROP FILTER-Beispiel

Löschen eines 'BLOB'-Filters.
DROP FILTER DESC_FILTER;