I need to pass a physical file( or the contents of that file), that contains code to create an Oracle stored procedure into DBD-Oracle. So like SQL PLus, where I'd say
SQL> @package.spb, I have been trying to do all sorts of things with $DBH->prepare / do / etc.
As of right now, this is not working:
# load file contents
open (FILEDATA, "$sql");
while ($record = <FILEDATA>) {
print $record;
}
close(FILEDATA);
# prepare the stored procedure
if ($sth = $DBH->prepare( $record )){
# execute the stored procedure
if ($sth->execute()){
print $LOG "it made it: $HoH{$filename {'full_filename'} \n";
+
$HoH{$filename}{'build_state'} = 'COMPILED';
} else {
# update the hash, since we will not be loading this one
print $LOG "couldnt excute: $HoH{$filename {'full_filename'} \n";
+
$HoH{$filename}{'build_state'} = 'FAILED - COULD NOT EXECUTE';
+
}
} else {
# update the hash, since we will not be loading this one
print $LOG "couldnt prepare: $HoH{$filename {'full_filename'} \n";
+
$HoH{$filename}{'build_state'} = 'FAILED - COULD NOT PREPARE';
} # preparing sql
When executed, I get:
DBD::Oracle::db prepare failed: ORA-24373: invalid length specified for statement (DBD ERROR: OCIStmtPrepare) at C:\Tronweb\TW_AUTOMATED_BUILDS\scripts\release_cvs_to_dev.pl line 261.
This file that I'm trying to prepare is small, and I've even set up my Oracle session as:
#Open an Oracle session
$DBH = DBI->connect( "dbi:Oracle:$sid", $usr, $pwd )
or die "Unable to connect to $sid: $DBI::errstr";
$DBH->{RaiseError} = 1;
$DBH->{LongReadLen} = 5242880;
$DBH->{LongTruncOk} = 0;
Do you have any suggestions for this dilemma?
THANK YOU for any advice / direction that you can provide!