1

我已尝试使用以下脚本连接到数据库。这种方式适用于 oracle,但我不确定为什么它不适用于 Sybase。

#!/usr/bin/perl

use strict;
use warnings;

my $result = qx { isql -Uxx -Pxxxxxxx -Dxxxxx <<EOF
select count(*) from XXX;
exit;
EOF
};
print "result is :";
print $result;
print "\nbye bye\n";

我试图在没有 DBI 的情况下连接到 sybase DB。请不要告诉我使用 DBI。即使我知道我们可以为此使用 DBI。但不幸的是,DBI 没有安装在我的服务器中,而且我不是管理员,我有权为 perl 安装模块。曾经给出过什么对我来说,我必须充分利用它。但这不是一个话题。

我重复这个问题:

如何在不使用 DBI 的情况下从 perl 连接到 sybase DB?

上述脚本的输出是:

> temp.pl
result is :
bye bye

当我手动执行相同的事情时:

> isql -Uxx -Pxxxxxxxx -Dxxxxx
1> select count(*) from XXX
2> go

 ----------- 
          26 

(1 row affected)
1> exit
>
4

1 回答 1

0

我得到了解决方案:这是因为分号和 go 语句。我修改了下面的脚本,它现在可以工作了。

#!/usr/bin/perl

use strict;
use warnings;

my $result = qx { isql -Uxx -Pxxxxxxx -Dxxxx <<EOF
set nocount on
select count(*) from XXX
go
exit
EOF
};
print "result is :";
print $result;
print "\nbye bye\n";
于 2012-08-16T07:38:00.190 回答