Kargil Jay has asked for the wisdom of the Perl Monks concerning the following question:
Salutations to monks. I observed that perl (5.005_03) with DBlib behaves in an unexpected way, when $dbh->dbnextrow(return_hash=1,return_ref=1) is called; For first dbnextrow(1,1) call all fine. But second dbnextrow(1,1) call over writes the first reference returned.
I solved the problem by using dbnextrow(1,0) (getting hash instead of hash ref) But just wondering where is the problem
$ /apps/gnu/bin/perl use Sybase::DBlib; $dbh = new Sybase::DBlib (SERVER,USER,PASS); $dbh->dbcmd('select ser=@@servername'); $dbh->dbsqlexec; $dbh->dbresults; $a = $dbh->dbnextrow(1,1); $dbh->dbcmd('select dt=getdate()'); $dbh->dbsqlexec; $dbh->dbresults; $b = $dbh->dbnextrow(1,1); print " a-ser: $a->{'ser'} \n\n"; # this becomes non-existant print " a-dt: $a->{'dt'} \n\n"; # this value suddenly appears, whi +ch was not even present in the original query print " b-ser: $b->{'ser'} \n\n"; print " b-dt: $b->{'dt'} \n\n"; __END__ OUTPUT : -------- a-ser: a-dt: Mar 30 2011 8:37:50:646PM b-ser: b-dt: Mar 30 2011 8:37:50:646PM
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: DBlib dbnextrow(1,1) problem
by mpeppler (Vicar) on May 04, 2011 at 13:41 UTC |