2016-04-12 9 views
0

Ich benutze Perl 5.16.3, DBD :: ODBC 1.47, Unix-ODBC-2.2.11, freetds 0,91Perl, ODBC, SQL-Server, zurückgegeben drucken Nachrichten in falscher Reihenfolge

ich das kleine Programm unten erstellen, führen Sie es und erhalten die Ausgabe:

[unixODBC][FreeTDS][SQL Server]Third 
[unixODBC][FreeTDS][SQL Server]Second 
[unixODBC][FreeTDS][SQL Server]First 

Warum sind die Zeilen in umgekehrter Reihenfolge? Ich habe TDSDUMP eingestellt und in der Logdatei nachgesehen, als ob die Zeilen in der richtigen Reihenfolge an mich gesendet werden.

Die getesteten Code ist:

use strict; 

use DBI qw(:sql_types); 
use DBD::ODBC qw(:diags); 

my $dbh = DBI->connect("DBI:ODBC:database", "USER", "SECRET"); 
$dbh->{odbc_err_handler} = \&ODBCMsgHandler; 
$dbh->do("use asra_jkp"); 

my $statement = "CREATE PROCEDURE testprint AS print 'First' print 'Second' print 'Third'"; 
$dbh->do($statement); 

$statement = "EXEC testprint"; 
$dbh->do($statement); 

$statement = "DROP PROCEDURE testprint"; 
$dbh->do($statement); 

sub ODBCMsgHandler { 
    my ($state, $msg, $native, $rc, $status) = @_; 
    print "$msg\n"; 
} 

EDIT:

ich auf einer anderen Maschine versucht, mit Perl 5.18.2 und DBD :: ODBC 1.50. Auf dieser Maschine erscheinen die Druckanweisungen in der richtigen Reihenfolge.

Antwort

0

ich das Problem selbst gelöst und lassen Sie eine Antwort für andere zu finden.

Das Problem ist UnixODBC. Durch die Aktualisierung von UnixODBC auf die neueste Version (2.3.4) wurde das Problem behoben.