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 BLOBs 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 NONEwird erstelltIn Firebird 5.0 (und — vielleicht — Firebird 4.0.3) wird dies geändert, um den Verbindungszeichensatz anstelle von
NONEzu verwenden. -
permanentes
BLOB(aus einer Tabelle) oder temporäresBLOB, das bereits geschlossen war: neuesBLOB SUB_TYPE TEXTwird erstellt, gefüllt mit dem Inhalt des ursprünglichenBLOB.Wenn das ursprünglicheBLOBSUB_TYPE TEXTist, 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
BLOBverwendet wird. -
temporäres, nicht geschlossenes
BLOBmit demBLB_close_on_read-Flag (z. B. erstellt durch einen anderen Aufruf vonBLOB_APPEND): unverändert verwendet, verbleibende Argumente werden an diesesBLOBangehängt -
andere Datentypen: ein neuer
BLOB SUB_TYPE TEXTwird 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:
-
NULLs werden ignoriert (verhält sich wie ein leerer String) -
BLOBs 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 |