我使用的是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的另一台机器。在这台机器上,打印语句的顺序正确。
答案 0 :(得分:0)
我自己解决了这个问题并给别人留下了答案。
问题是UnixODBC。将UnixODBC升级到最新版本(2.3.4)解决了这个问题。