Tim Bunce wrote:
> 
> On Fri, Feb 01, 2002 at 09:21:09AM +0100, Steffen Goeldner wrote:
> > A new patch for DBD::Oracle:
> >
> >  - get_info() now takes a numeric value
> >  - SQL_DBMS_VERSION is supported
> >
> > More info types if desired. (I don't like a blindfold
> > adoption of the Oracle ODBC driver results.)
> 
> Great, many thanks.
> 
> Could I ask that you move the hash setup outside the function
> and put in there only the values that are constant.
> 
> Then in the function do something like
> 
>   sub get_info {
>     my($dbh, $info_type) = @_;
>     my $v = $get_info_constants{int($info_type)};
>     return $v if defined $v;
>     ... handle the other values ...
>   }
> 
> I'd like this to be a good and efficient model for other drivers
> to follow.
> 
> Umm, here's another idea... for the non-constant items put them into
> the %get_info_constants hash as anonymous subs that return the appropriate
> value. Then in get_info do:
> 
>   sub get_info {
>     my($dbh, $info_type) = @_;
>     my $v = $get_info_constants{int($info_type)};
>     $v = &$v($dbh) if ref $v eq 'CODE';
>     return $v;
>   }
> 
> Umm, carrying on from there... move %get_info_constants into DBD::Oracle::GetInfo
> and make get_info do:
> 
>   sub get_info {
>     my($dbh, $info_type) = @_;
>     require DBD::Oracle::GetInfo;
>     my $v = $DBD::Oracle::GetInfo::info{int($info_type)};
>     $v = &$v($dbh, $info_type) if ref $v eq 'CODE';
>     return $v;
>   }

Two Umm's more and nothing remains to be done :-)


Steffen

Reply via email to