Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle 10 :Utilisation de HEXTORAW pour remplir les données blob

Pour mettre à jour un BLOB plus long que 16383 octets, quelque chose comme ceci peut être utilisé (chaque ligne a un nombre pair de chiffres hexadécimaux jusqu'à 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;

maintenant, la limite est uniquement la taille de l'instruction, qui peut être imposée par l'environnement d'exploitation (par exemple SQLPlus, Pro*C, VB, JDBC...). Pour les très grosses instructions, PL/SQL peut également échouer avec l'erreur "hors de nœuds Diana".