in reply to Re^3: DBI, sp_rename, and STDERR
in thread DBI, sp_rename, and STDERR
Jason,
Have you tried it? I've never been able to catch print statements from stored procs with an error handler (
DBD::Sybase Version 1.61 and Sybase 12.5.x).
I tried using your error handler on a tempdb table I created
!/usr/local/bin/perl use strict; use DBI; my $dbh = DBI->connect("dbi:Sybase:server=xxx", "u", "p", { PrintError => 0, syb_err_handler => \&syb_error_handler } ); $dbh->do( "use tempdb" ); my $sql = "exec sp_rename derby, derby1"; $dbh->do( $sql ); sub syb_err_handler { my ($err, $sev, $state, $line, $server, $proc, $msg, $sql, $err_ty +pe) = @_; my $ERROR = 1; my $WARNING = 0; my $return_code = $ERROR; if ( ($err == 131) && ($sev == 5) ) { ## Connection attempt failed return $ERROR; } elsif ( ($err == 0) && ($sev == 10) && ($state == 1) ) { if ( $msg =~ m/Active traceflags:/i ) { process_dbcc_list($msg); $return_code = $WARNING; } else { unless ( $msg =~ m/^\s+$/ ) { chomp $msg; print $msg . "\n"; } } $return_code = $WARNING; } elsif ( ($err == 3) && ($sev == 5) ) { print "err: $msg\n"; $return_code = $ERROR; } return ($return_code); }
Just didn't work. The print statement was not caught by the error handler and was outputted to STDERR.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: DBI, sp_rename, and STDERR
by jfroebe (Parson) on Jul 20, 2005 at 15:20 UTC | |
by jfroebe (Parson) on Jul 20, 2005 at 15:27 UTC |