【发布时间】:2016-04-12 13:45:56
【问题描述】:
我使用 perl 5.16.3、DBD::ODBC 1.47、Unix ODBC 2.2.11、freeTDS 0.91
我在下面创建了一个小程序,运行它并得到输出:
[unixODBC][FreeTDS][SQL Server]Third
[unixODBC][FreeTDS][SQL Server]Second
[unixODBC][FreeTDS][SQL Server]First
为什么这些行是倒序的?我已设置 TDSDUMP 并查看日志文件,似乎这些行以正确的顺序发送给我。
测试的代码是:
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";
}
编辑:
我在另一台机器上尝试了 perl 5.18.2 和 DBD::ODBC 1.50。在这台机器上,打印语句以正确的顺序出现。
【问题讨论】:
标签: sql-server perl odbc