#!/usr/bin/perl
use strict;
use CGI::Carp qw(fatalsToBrowser);
use DBI;
use DBD::Oracle qw(:ora_types);
require "../cbt-lib.pl"; # has header/footer and oracle connect functions
&header("blob_test");
my $dbh = &oracleConnectAuth("WRITE");
my $file_name = 'test.zip';
$dbh->{LongReadLen} = 20000 * 1024;
&put_blob($dbh,$file_name);
&get_blob($dbh,$file_name);
$dbh->disconnect;
&footer;
exit 0;
sub put_blob
{
my ($dbh,$file_name) = @_;
my $data;
my $blob_data;
open (INFILE, "<$file_name") || die "could not $file_name";
binmode INFILE, ":raw";
while(read(INFILE,$data,1024))
{
$blob_data .= $data;
}
close INFILE || die "could not close INfile";
my $sqlstring = "delete from cbt_blob_test";
$dbh->do ($sqlstring) or die "delete:
$DBI::errstr
$sqlstring";
$sqlstring = "INSERT INTO CBT_BLOB_TEST (FILE_NAME,ZIPFILE) VALUES (?,?)";
my $sth = $dbh->prepare ($sqlstring) or die "prepare:
$DBI::errstr
$sqlstring";
$sth->bind_param(1, $file_name) or die "bind 1:
$DBI::errstr
$sqlstring";
$sth->bind_param(2, $blob_data, {ora_types=>ORA_BLOB} ) or die "bind 2:
$DBI::errstr
$sqlstring";
$sth->execute() or die "execute:\n$DBI::errstr\n$sqlstring";
$sth->finish;
$dbh->commit;
}
sub get_blob
{
my ($dbh,$file_name) = @_;
my $sqlstring = "SELECT ZIPFILE FROM CBT_BLOB_TEST WHERE FILE_NAME = '$file_name' ";
print "$sqlstring
";
my $blobdata = &getDBdata ($sqlstring,$dbh);
open (OUTFILE, ">blob_test_output") || die "could not open OUTfile";
binmode (OUTFILE);
print OUTFILE $blobdata;
close OUTFILE || die "could not close OUTfile";
}