Thread

Posted on Wed Oct 10 11:54:52 2007 by ricardo11
Empty strings in result while there supposed to be a value
Hi. Sorry if this turns out to be a newbie mistake, but I've run into an odd problem while using DBD::Oracle. For some reason, my sql statement results in empty strings. Instead of getting the value i want to see there is a "''," (please see below). The amount of columns (6 in this case) are correct. I'm using perl v5.8.8, DBD::Oracle v1.19, Oracle instantclient-basic - instantclient-devel and sqlplus. Does someone know what i'm doing wrong? When i manually do a query with help of sqlplus of the Oracle instant client it is ok (see below). This is the result with the empty strings when using DBD::Oracle : main::(db1.pl:47): my $result = $sth-<dump_results; DB>1 '', '', '', '', '', '' '', '', '', '', '', '' '', '', '', '', '', '' '', '', '', '', '', '' '', '', '', '', '', '' 5 rows This is the result when using sqlplus : node1# ./sqlplus login/login@//ip:port/db SQL*Plus: Release 11.1.0.6.0 - Production on Wed Oct 10 10:36:34 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to: Oracle Compatible Release 9.2.0.4.0 Oracle Rdb OCI Server Release 7.1.6.2.1 - Production, Level 1.7 Oracle Rdb SQL Release 7.1.4.0.0 - Production SQL> select * from table; table1 ta table3 t table5 table 6 ------ -- ------ - ------ ------------- 004400 10 075935 0 075935 1 004400 10 075938 0 075938 1 520020 71 127464 0 127464 1 004400 10 075939 0 075939 1 004400 10 075945 0 075945 1 5 rows selected. SQL this is the code i'm using : #!/usr/bin/perl use DBI; use DBD::Oracle; $ENV{'LD_LIBRARY_PATH'} = '/home/httpd/perl/instantclient_11_1/'; #$ENV{'NLS_LANG'} = 'AMERICAN_AMERICA.UTF8'; #$ENV{'NLS_LANG'} = 'AMERICAN_AMERICA.AL32UTF8'; #$$ENV{'NLS_NCHAR'} = 'AL32UTF8'; #$ENV{'NLS_NCHAR'} = 'UTF8'; #$ENV{NLS_LANG}="AMERICAN_AMERICA.WE8MACROMAN8S"; #$ENV{'NLS_LANG'} = 'WE8ISO8859P1'; #$ENV{'NLS_LANG'} = 'WE8MSWIN1252'; #$ENV{'NLS_LANG'} = 'US7ASCII'; #$ENV{'NLS_LANG'} = 'UTF8'; #$ENV{'NLS_LANG'} = 'AL32UTF32'; $ENV{NLS_LANG} = 'american_america.we8iso8859p1'; my $host= my $sid= my $port= my $user = my $passwd = my $dbh = DBI>connect("dbi:Oracle:host=$host;port=$port;sid=$sid", $user, $passwd) or die "Unable to connect: $DBI::errstr"; my $statement = 'SELECT * FROM table'; $sth = $dbh->prepare($statement); $sth->execute; my $result = $sth->dump_results; Thank you in advance, Ricardo
Direct Responses: 6215 | Write a response
Posted on Wed Oct 10 13:44:09 2007 by byterock in response to 6213
Re: Empty strings in result while there supposed to be a value
You would be much better off posting your question to dbi-users@perl.org (you don't need to subscribe in order to post) and you won't be automatically subscribed either. Very few people actully use or view this form for dbi or driver support. dbi-users is where you'll get the best support.
<>
As for the above problem what are the type of fields you are trying to select? and which version of Oracle are you using??
Direct Responses: 6216 | Write a response
Posted on Wed Oct 10 14:23:58 2007 by ricardo11 in response to 6215
Re: Empty strings in result while there supposed to be a value
Thank you for the advice. I'll do so. I'm using Oracle version 7.1-401 and the type of fields are : Column Name Data Type Domain ----------- --------- ------ TABLE1 CHAR(6) TABLE2 CHAR(2) TABLE3 CHAR(6) TABLE4 CHAR(1) TABLE5 CHAR(6) TABLE6 TINYINT Many thanks, Ricardo
Direct Responses: 6415 | Write a response
Posted on Wed Nov 7 19:02:02 2007 by byterock in response to 6216
Re: Empty strings in result while there supposed to be a value
Most likey an old oracle bug that to do with char fields. I can't remember if the bug was return empty for '______' or ''. anyway that version of Oracle is very old and funny results with a new client are to be expected. No sure how DBD::ORacle is suppose to handle it I think it retuns empty space in it latest incarnation
Write a response