Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle 10:Verwenden von HEXTORAW zum Ausfüllen von Blob-Daten

Um ein BLOB zu aktualisieren länger als 16383 Bytes kann so etwas verwendet werden (jede Zeile hat eine gerade Anzahl von Hex-Ziffern bis zu 32766):

DECLARE
  buf BLOB; 
BEGIN
  dbms_lob.createtemporary(buf, FALSE);
  dbms_lob.append(buf, HEXTORAW('0EC1D7FA6B411DA58149'));
  --...lots of hex data...
  dbms_lob.append(buf, HEXTORAW('0EC1D7FA6B411DA58149'));
  UPDATE MyTable
     SET blobData = buf
   WHERE ID = 123;
END;

Jetzt ist die Grenze nur die Größe der Anweisung, die durch die Betriebsumgebung (z. B. SQLPlus, Pro * C, VB, JDBC ...) auferlegt werden kann. Bei sehr großen Anweisungen kann PL/SQL auch mit dem Fehler "out of Diana nodes" fehlschlagen.