On Sun, 29 Apr 2001, Micah Cowan wrote: > On Fri, Apr 27, 2001 at 05:34:08PM -0700, [EMAIL PROTECTED] wrote: > > On Fri, 27 Apr 2001, Micah Cowan wrote: > > > > > On Fri, Apr 27, 2001 at 03:28:58PM -0500, Jay Strauss wrote: > > > > In DBI there is: > > > > > > > > $ary_ref = $dbh->selectrow_arrayref($statement); > > > > @row_ary = $dbh->selectrow_array($statement); > > > > > > > > but only > > > > > > > > $ary_ref = $dbh->selectcol_arrayref($statement); > > > > > > > > Why??? (i.e why no @col_ary = $dbh->selectcol_array($statement)) > > > > > > Dunno. You'll have to ask the author :) > > > > I think this would encourage inefficient programming constructs, because > > such a function would imply a complete iteration through all the rows and > > columns while ignoring all but one. It is more efficient to use a query > > that only returns the single column you are interested in. > > I don't think it would imply that at all. Whether it returns a list, > or a reference to an array, it still does the same iteration. If > something can return a reference to a (newly constructed) array, one > could certainly return a list of values just as easy. Or did I > misunderstand you? No, I misunderstood the semantics of selectcol_arrayref. I thought it was returning a reference to an array of references to row arrays. I would avoid using selectcol_arrayref with a select statement that has more than one result column. > It might be that it was done this way to eliminate a copy of the list > created by this method into the return value, but I really don't know > anything about the DBI (or Perl) internals, so I really can't say. Well, it is one thing to build in a copy of an array with a few tens of elements, but the column could have thousands of elements. Avoiding a copy makes sense to me. --------------------------------------------------------------------------- Jeff Newmiller The ..... ..... Go Live... DCN:<[EMAIL PROTECTED]> Basics: ##.#. ##.#. Live Go... Work:<[EMAIL PROTECTED]> Live: OO#.. Dead: OO#.. Playing Research Engineer (Solar/Batteries O.O#. #.O#. with /Software/Embedded Controllers) .OO#. .OO#. rocks...2k ---------------------------------------------------------------------------
