sql >> Base de Datos >  >> RDS >> Oracle

Oracle 10:uso de HEXTORAW para completar datos de blob

Para actualizar un BLOB más de 16383 bytes, se puede usar algo como esto (cada línea tiene un número par de dígitos hexadecimales hasta 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;

ahora el límite es solo el tamaño de la declaración, que puede imponer el entorno operativo (por ejemplo, SQLPlus, Pro*C, VB, JDBC...). Para sentencias muy grandes, PL/SQL también puede fallar con el error "fuera de los nodos de Diana".