Perl,ODBC,SQL server,以错误的顺序返回打印消息

时间:2016-04-12 13:45:57

标签: sql-server perl odbc

我使用的是perl 5.16.3,DBD :: ODBC 1.47,Unix ODBC 2.2.11,freeTDS 0.91

我在下面创建小程序,运行它并获得输出:

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";
}

为什么线条顺序相反?我已经设置了TDSDUMP并查看了日志文件,看起来这些行是以正确的顺序发送给我的。

测试的代码是:

{{1}}

编辑:

我尝试使用perl 5.18.2和DBD :: ODBC 1.50的另一台机器。在这台机器上,打印语句的顺序正确。

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题并给别人留下了答案。

问题是UnixODBC。将UnixODBC升级到最新版本(2.3.4)解决了这个问题。