Updating a BLOB (Binary Large Object) in Oracle can be achieved using several methods.
1. Updating with a Buffer (Direct Data):
UPDATE your_table SET your_blob_column = :new_blob_data WHERE primary_key_column = :key_value;
2. Updating by Selecting a LOB from Another Table or Source:
UPDATE your_table SET your_blob_column = (SELECT source_blob_column FROM source_table WHERE some_condition) WHERE primary_key_column = :key_value;
3. Updating with EMPTY_BLOB():
UPDATE your_table SET your_blob_column = EMPTY_BLOB() WHERE primary_key_column = :key_value;
4. Updating a BLOB field with the contents of a file:
CREATE DIRECTORY MY_DIR AS '/directory/subdirectory';
DECLARE
src_bfile BFILE := BFILENAME('MY_DIR', 'filename.txt');
dest_blob BLOB;
BEGIN
SELECT BLOBCOL into dest_blob FROM BLOBTABLE WHERE ROWID = 'ROWIDVALUE';
DBMS_LOB.OPEN(src_bfile, DBMS_LOB.LOB_READONLY);
DBMS_LOB.LoadFromFile( DEST_LOB => dest_blob,
SRC_LOB => src_bfile,
AMOUNT => DBMS_LOB.GETLENGTH(src_bfile) );
DBMS_LOB.CLOSE(src_lob);
COMMIT;
END;
/
And you can use DBBlobEditor to Batch update Oracle table BLOB data from files.
See also: Oracle BLOB, View and edit BLOB data stored in Oracle.