in reply to Re^3: DBD::Oracle::st fetchrow_hashref failed: ORA-25401
in thread RESOLVED - DBD::Oracle::st fetchrow_hashref failed: ORA-25401
It runs fine when I leave out "NOTE" and "LOV_DISPLAY_KEY" which are VARCHAR2. The others are just NUMBER type.
I'm guessing the issue is with the "NOTE" data. If I leave out just "NOTE", it runs and gets all the rows, but then hangs when it attempts to execute the sql again for a second time through a loop it's inside... I'm guessing that's an issue with my code and trying to do it in a loop that way, this is my first time attempting stuff like this so I'm still learning. A broader snip of my perl script:
# establish database connection my $dsn = "dbi:Oracle:DWAPRD"; my $dbh = DBI->connect($dsn, $user, $pass); # execute "lov_table_lookup.sql" my $sth = $dbh->prepare($lov_table_sql); $sth->execute($note_filter, $name_filter); # print returned data and store table numbers in array my @table_numbers; print "\n----------\n"; while(my $row = $sth->fetchrow_hashref()) { print $row->{'TABLE_NUMBER'}, " ", $row->{'GLOBAL_SECTION_NAME'}, +" ", $row->{'NOTE'}, "\n"; push(@table_numbers, $row->{'TABLE_NUMBER'}); } print "----------\n"; # retrieve and print lov value list for each table number found foreach(@table_numbers) { my $row_counter = 1; # execute "lov_value_lookup.sql" my $sth = $dbh->prepare($lov_value_sql); $sth->execute($_); print "\n----------\n"; while(my $row = $sth->fetchrow_hashref()) { print "$row_counter ", $row->{'TABLE_NUMBER'}, " ", $row->{'LO +V_INTEGER_KEY'}, " ", $row->{'LOV_DISPLAY_KEY'}, " ", #$row->{'NOTE'}, "\n"; $row_counter++; } print "----------\n"; }
And the error message I get in that case, which seems to be just telling me "hey dummy, you can't do that with a loop that way" or something of that nature:
DBD::Oracle::db prepare failed: ORA-25408: can not safely replay call +(DBD ERROR: OCIStmtExecute/Describe) [for Statement "-- List all the +codes SELECT table_number , lov_integer_key , lov_display_key --, note FROM rdb_main.dk_lov_detail_rec WHERE table_number = ? ORDER BY table_number, lov_integer_key "] at lov_lookup.pl line 51. Can't call method "execute" on an undefined value at lov_lookup.pl lin +e 52.
EDIT: Yes, it runs fine when I moved the prepare statement outside the loop (derp on my part), so the problem is presumably in the "NOTE" column data for those particular rows it's hanging on.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^5: DBD::Oracle::st fetchrow_hashref failed: ORA-25401
by TieUpYourCamel (Scribe) on Jan 30, 2020 at 18:22 UTC | |
by perldigious (Priest) on Feb 04, 2020 at 19:57 UTC |