in reply to Re: Re: Re: Retrieving result sets using stored procedures (DBI, DBD::Oracle)
in thread Retrieving result sets using stored procedures (DBI, DBD::Oracle)

FYI,

It appears that things are just a bit pickier using DBI than I'm used to...

In the package description, I changed the where clause of the select:
s/job = job_in/RTRIM (job) = RTRIM (job_in)/;
and...success (using the oracle 9 client no less!). :-)

gsiems
  • Comment on Re: Re: Re: Re: Retrieving result sets using stored procedures (DBI, DBD::Oracle)
  • Download Code

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Retrieving result sets using stored procedures (DBI, DBD::Oracle)
by rdfield (Priest) on Jul 03, 2002 at 15:59 UTC
    Taking a closer look at the results in you original question it looks like your emp table was populated with space padded data (i.e. 'CLERK     ' rather than 'CLERK'). The change to the SQL using RTRIM will stop the optimizer from using indexes - my suggested change would be run an update statement first to remove the extra spaces. There is a function called 'dump' that can be applied to returned column (e.g. dump(job)) that can help in these situations: it shows the actual size and internal representation of the data, which would have immediately shown that the returned data was too long (10 characters for 'CLERK     ' v 5 characters for 'CLERK')

    rdfield

      Thanks,

      The test table has the columns as CHAR rather than VARCHAR2 so, as you know, the padding spaces *just happen*. Funny thing, had the datatype been other than CHAR I might never have had to ask the original question...

      gsiems