BLOB_APPEND()
DSQL, PSQL
4.0.2
BLOB
BLOB_APPEND(expr1, expr2 [, exprN ... ])
Parameter | Beschreibung |
---|---|
exprN |
Ein Ausdruck eines Typs, der in |
Die BLOB_APPEND
-Funktion verkettet Blobs, ohne zwischenzeitliche BLOB
s zu erstellen, wodurch übermäßiger Speicherverbrauch und Wachstum der Datenbankdatei vermieden werden.Die Funktion BLOB_APPEND
nimmt zwei oder mehr Argumente und fügt sie zu einem BLOB
hinzu, der für eine weitere Modifikation durch einen nachfolgenden Aufruf von BLOB_APPEND
offen bleibt.
Das resultierende BLOB
wird zum Schreiben offen gelassen, anstatt geschlossen zu werden, wenn die Funktion zurückkehrt.Mit anderen Worten, das BLOB
kann beliebig oft angehängt werden.Die Engine markiert das von BLOB_APPEND
zurückgegebene BLOB
mit einem internen Flag BLB_close_on_read
und schließt es bei Bedarf automatisch.
Das erste Argument bestimmt das Verhalten der Funktion:
-
NULL
: neues, leeresBLOB SUB_TYPE TEXT CHARACTER SET NONE
wird erstelltIn Firebird 5.0 (und — vielleicht — Firebird 4.0.3) wird dies geändert, um den Verbindungszeichensatz anstelle von
NONE
zu verwenden. -
permanentes
BLOB
(aus einer Tabelle) oder temporäresBLOB
, das bereits geschlossen war: neuesBLOB SUB_TYPE TEXT
wird erstellt, gefüllt mit dem Inhalt des ursprünglichenBLOB
.Wenn das ursprünglicheBLOB
SUB_TYPE TEXT
ist, wird dessen Zeichensatz verwendet, andernfalls der ZeichensatzOCTETS
.In Firebird 5.0 (und -– vielleicht -– Firebird 4.0.3) wird sich dies dahingehend ändern, dass der Untertyp des anfänglichen
BLOB
verwendet wird. -
temporäres, nicht geschlossenes
BLOB
mit demBLB_close_on_read
-Flag (z. B. erstellt durch einen anderen Aufruf vonBLOB_APPEND
): unverändert verwendet, verbleibende Argumente werden an diesesBLOB
angehängt -
andere Datentypen: ein neuer
BLOB SUB_TYPE TEXT
wird erstellt, gefüllt mit dem ursprünglichen Argument, das in einen String umgewandelt wurde.Wenn der Originalwert ein Zeichentyp ist, wird dessen Zeichensatz verwendet (bei String-Literalen der Verbindungszeichensatz), ansonsten ZeichensatzNONE
(wird in Firebird 5.0 und — vielleicht — Firebird 4.0.3 geändert, um den Verbindungszeichensatz zu verwenden).
Andere Argumente können von beliebigem Typ sein.Für sie ist folgendes Verhalten definiert:
-
NULL
s werden ignoriert (verhält sich wie ein leerer String) -
BLOB
s werden ggf. in den Zeichensatz des ersten Arguments transliteriert und ihr Inhalt an das Ergebnis angehängt -
andere Datentypen werden (wie üblich) in Strings umgewandelt und an das Ergebnis angehängt
Die Funktion BLOB_APPEND
gibt einen vorübergehend nicht geschlossenen BLOB
mit dem Flag BLB_close_on_read
zurück.Wenn das erste Argument ein solches temporäres, nicht geschlossenes BLOB
ist (z. B. durch einen vorherigen Aufruf von BLOB_APPEND
erstellt), wird es so verwendet, wie es ist, andernfalls wird ein neues BLOB
erstellt.Daher führt eine Reihe von Operationen wie blob = BLOB_APPEND (blob, …)
zur Erstellung von höchstens einem BLOB
(es sei denn, Sie versuchen, ein BLOB
an sich selbst anzuhängen).Dieses Blob wird automatisch von der Engine geschlossen, wenn der Client es liest, es einer Tabelle zuweist oder es in anderen Ausdrücken verwendet, die das Lesen des Inhalts erfordern.
Warning
|
Wichtige Einschränkungen für
BLOB_APPEND
|
Note
|
Der eines Blobs auf |
Tip
|
Verwenden Sie die Funktionen |