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".