Perl DBI Sybase Asanywhere绑定变量问题

时间:2017-05-22 12:57:49

标签: perl sybase bind-variables

我必须将我的web服务器(仅限内部使用)切换到更新的版本,因此我还有新的perl和新的DBD:Sybase而不是DBD:我之前使用的ASAny。

我使用带有绑定变量的语句,它们工作正常,但是使用DBD:Sybase我收到以下错误:

  

AH01215:DBD :: Sybase :: st执行失败:服务器>消息号= 12006严重性= 16状态= 0行= 0文本= SQL Anywhere-Fehler> -110:元素' DBD1&#39 ; ist bereits vorhanden

版本:

新:DBD :: Sybase

/usr/local/lib/x86_64-linux-gnu/perl/5.22.1/DBD/Sybase.pm     安装:1.15

Old:DBD :: ASAny

DBD :: ASAny版本1.14。

#!/usr/bin/perl 

use DBI;
print "Content-type: text/html\n\n";

$dbh = DBI->connect( "DBI:Sybase:server=tl", 'xxx', 'yyy', {PrintError => 1, AutoCommit => 0} ) or die "Connection failed\n    Connection string: $connstr\n    Error message    : $DBI::errstr\n";

$dbh2 = DBI->connect( "DBI:Sybase:server=tl", 'xxx', 'yyy', {PrintError => 1, AutoCommit => 0} ) or die "Connection failed\n    Connection string: $connstr\n    Error message    : $DBI::errstr\n";

$select="select artnr, bez1, bez2 from art where artnr like 'F%12%.00'";
$sth_t=$dbh->prepare($select);
$sth_t->execute();

$select="select lager_nr, bestand from bestand where art_nr = ? and coalesce(bestand,0) > 0 ";
$sth_lager=$dbh2->prepare($select)  or die "Prep sthlager nix:".$dbh2->errstr()."\n";

while ( ($artnr, $gtnr, $bez)=$sth_t->fetchrow())
{
    print $artnr."; ".$gtnr."; ".$bez;
    $sth_lager->execute($artnr)   or die "exec sthlager nix:".$dbh2->errstr()."\n";
    while ( ($lager,$bestand) = $sth_lager->fetchrow())
    {
        print $lager." : ".$bestand." || ";
    }
    $sth_lager->finish();
    print "\n<br>";
}

违规行是&#34; $ sth_lager-&gt;执行($ artnr)&#34;

1 个答案:

答案 0 :(得分:0)

感谢大家,特别是simbabque,他走在了正确的轨道上。答案很简单: ▼编写DBD :: ASAny是为了处理SQL Anywhere,而DBD :: Sybase是为Sybase Adaptive Server Enterprise编写的,这两个系统实际上是完全不同的。
我使用了错误的工具。雾。