Hello Evans/DBi-users,
DBD::ODBC is returning strings for integers. This results in incorrect values
for bit wise operators. (for ex:- $e='16'; $f = '32' print $e & $f returns
12 instead of zero ). Is there a setting that can help us return integers as
'integers'.
I am using EasySoft Driver via DBD::ODBC to connect to Microsoft SQL Server
2008 R2 from Linux RHEL 6.2.
Version information
---
Perl : 5.10.1
DBI : 1.609
DBD::ODBC : 1.30_5
Please use the below code to reproduce the issue and let me know if I you need
more information.
Help much appreciated !!
Thanks
# Create temp_check and inserted one row with values (100, 10.234 and 'test')
CREATE TABLE temp_check
( a int,
b float,
c varchar (100)
)
INSERT INTO temp_check VALUES (100, 10.234000, 'test')
PERL snippet
----------------------
use DBI;
use Data::Dumper;
$dbh = DBI->connect('dbi:ODBC:DSN=SERVER1','***','***');
$dbh->{TraceLevel}=15;
$sth = $dbh->prepare('select * from sandbox..temp_check where a=100');
#$sth = $dbh->prepare('select * from sandbox..temp_check where a=100',
{odbc_describe_parameters => 0});
$sth->execute();
for ($i = 1; $i <= $sth->{NUM_OF_FIELDS}; $i++) {
print "Column $sth->{NAME}->[$i -1] is of type $sth->{TYPE}->[$i -1]\n";
}
$rows = $sth->fetchall_arrayref();
print Dumper($rows);
Column a is of type 4
Column b is of type 6
Column c is of type 12
$VAR1 = [
[
'100',
'10.234',
'test'
]
];