Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle 10:Usando HEXTORAW para preencher dados de blob


Para atualizar um BLOB mais de 16383 bytes algo assim pode ser usado (cada linha tem um número par de dígitos hexadecimais até 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;

agora o limite é apenas o tamanho da instrução, que pode ser imposta pelo ambiente operacional (por exemplo, SQLPlus, Pro*C, VB, JDBC...). Para instruções muito grandes, o PL/SQL também pode falhar com o erro "out of Diana nodes".