Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle 10:utilizzo di HEXTORAW per compilare i dati BLOB

Per aggiornare un BLOB più lungo di 16383 byte potrebbe essere utilizzato qualcosa di simile (ogni riga ha un numero pari di cifre esadecimali fino a 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;

ora il limite è solo la dimensione dell'istruzione, che potrebbe essere imposta dall'ambiente operativo (es. SQLPlus, Pro*C, VB, JDBC...). Per istruzioni molto grandi, PL/SQL potrebbe anche non riuscire con l'errore "out of Diana nodes".