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' ] ];