Does it work if you switch to first preparing your statement handle, then executing it? I.e.,
my $sth = $dbh->prepare(<<'SQL');
where type = ?
and then pull the results out?
Also, you may want to have a look at http://search.cpan.org/~mewp/DBD-Sybase-1.09/Sybase.pm#Using_?_Placeholders_&_bind_parameters_to_$sth->execute if you haven't already.
Finally, if you're using version 1.0 of DBD::Sybase, you should probably upgrade to the latest -- looking at the CHANGES file (http://search.cpan.org/src/MEWP/DBD-Sybase-1.09/CHANGES) it's seen a lot of work since that time, including several things that sound like they could be related to the problem you're seeing.