I have been using freetds and DBD-Sybase as the cornerstone of my app since
many years ago. There is a bug in freetds or maybe something by design that
should be changed, that makes parameter-passing for stored procedures fail
using any "tds version" different than 4.2. I consulted Mike Peppler, the
author or DBD-Sybase, and presented him with a definitive proof of the
issue, and also I submitted a DBI-trace with both cases, when it works and
when it does not. He answered this "Please raise this with the FreeTDS group
- there's not much I can do, because the trace doesn't even show that the
data comes back to the application. Sorry."
If somebody could investigate the issue, I have a Linux box ready with the
Perl script, which I copy below:
------------------
use strict;
use DBI;
my $dbh = DBI->connect("dbi:Sybase:development:1433", 'user', 'pwd',
{PrintError => 0});
die "Unable for connect to server $DBI::errstr"
unless $dbh;
$dbh->do("use $db");
my $query = "declare \@param1 varchar(15), \@param2 money exec test_sql
\@param1 OUTPUT, \@param2 OUTPUT";
my $sth = $dbh->prepare($query);
DBI->trace(5);
$sth->execute();
do {
while(my $dat = $sth->fetch) {
print "TYPE $sth->{syb_result_type}\n";
print "Data @$dat[0] , @$dat[1] , @$dat[2] \n";
if($sth->{syb_result_type} == 4042) { # it's a PARAM result
print "Number: $dat->[0] \n";
print "Varpar: $dat->[1] \n";
}
}
} while($sth->{syb_more_results});
$sth=undef;
$dbh->disconnect;
-----------
The stored procedure is also very simple:
create procedure test_sql
@param1 varchar(15)=null out,
@param2 money =0 out
as
set nocount on
select @param1='Freetds', @param2 =56.60
Return
The issue is that this works flawlessly only with "tds version=4.2" and it
fails with any other version, like 8.0, which I use for SQL Server 2008. Is
it Freetds, DBI or DBD-Sybase?
Thanks
Federico
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.