Я не смог заставить пример Мигеля работать, так как моя установка Perl не имела оракула типа ORA_LOB.Вот пример, который работает для меня.
Для краткости я использую жестко закодированные значения и внутренние подпрограммы БД, поэтому вам, очевидно, потребуется интегрировать код в вашу среду.
use strict;
use DBI;
use DBD::Oracle qw(:ora_types);
require "lib.pl"; #contains getDBConnection() and myExit()
our $dbh = getDBConnection();
my $lob_value;
open FILE, "D:/Inet/wwwroot/tmpcharts/data.xls" or myExit("Failed to open input file: $!\n");
binmode FILE;
$lob_value .= $_ while(<FILE>);
close FILE;
my $sth = $dbh->prepare("update x_trl_test_files set doc=? where file_id=6");
$sth->bind_param(1, $lob_value, { ora_type => ORA_BLOB });
$sth->execute;
$dbh->commit;
myExit();