[freetds] Results returned differently - change in driver?

System Administrator tech at vircom.com.au
Tue Oct 28 14:59:02 EST 2003


Hi,

I have been using FreeTDS 0.51 with a bunch of Perl scripts to query a
number of MS SQL Server databases.  Some time ago, I discovered that
certain queries did not return the correct results, and upgraded to
version 0.61 of the driver.  This fixed that problem, but has introduced
another.

Previously, I could do something like this:

while (($one, $two, $three, $four, $five, $six, $seven) = $sth->fetchrow_array())
{
       print "$one \t$two \t$three \t$four \t$five \t$six \t$seven\n";
}

and, if the query did not return any results, the while loop would not
be entered.  This is as I would expect.  With version 0.61 of the driver, the
while loop is now entered, (it runs once), and the value of $one is set to 0.

This means that if I want to handle the case where queries may not
return any results, I now have to do something like this:

while ($sth->{syb_more_results})
{
	while (($one, $two, $three, $four, $five, $six, $seven) = $sth->fetchrow_array())
	{
		print "$one \t$two \t$three \t$four \t$five \t$six \t$seven\n";
	}
}

which is a huge pain, because there are hundreds of scripts that I would
have to modify.  Is there any way that I can change the behaviour of the
driver so that empty result sets are handled like they used to be?


Regards,

Adam.

ps - I have tried using several different versions of DBD::Sybase, but
all versions behave the same.
					


More information about the FreeTDS mailing list