Correct pg_type for a list of columns with SELECT?

dome stuff <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.general
Message-ID <CA+tv+ikDkWuC1pMftAQqF8XuBrk-OFQo9xXc7JmZ5H-hjtEA9g@mail.gmail.com>
Howdy,

Thanks in advance for any guidance you may be able to provide.

The following query throws error:

    could not determine data type of parameter $1

$1 contains a comma delimited list of column names.

I can run the query on the CLI and it works. If I swap the question mark
that is $1 in the query, with a static column list, the query works in
perl. Presumably I should be able to pass a column list as a variable when
preparing a statement, but apparently I'm not getting the type correct?

Could somebody refer me to the correct type code to use with delimted list
of columns?  Or do I have to do this a different way? I would prefer the
column list interpolate at prepare time, as it makes the function more
portable IMHO.

Note: the first function prepare()s when called with (1), the the second
function populates a provided array with anonymous hashes, and returns the
number of matching records.

### CODE ###

use DBI qw(:sql_types)    ;
use DBD::Pg qw(:pg_types) ;

 sub  _listrev {
        return $_[0]->{'_listrev'} unless $_[1] ;
        $_[0]->{'_listrev'} =  $_[0]->{'db_handle'}->prepare("SELECT ? FROM
$_[0]->{'_revtablename'} WHERE $_[0]->{'_recordidname'} = ? ORDER BY ? DESC
OFFSET ? LIMIT ?") ;
        return 1 ;
}

sub listrev { # get paginated revisions of a record, return count

        my $self = shift ;
        my $rectainer = shift ;
        my $recordid = shift  ;
        my $freccols = shift  ;
        my $orderby = shift   ;
        my $startrec = shift  ;
        my $endrec = shift    ;

        $self->{'_listrev'}->bind_param(1, $freccols, { 'pg_type' =>
'PG_VARCHAR'})  ;
        $self->{'_listrev'}->bind_param(2, $recordid)  ;
        $self->{'_listrev'}->bind_param(3, $orderby)  ;
        $self->{'_listrev'}->bind_param(4, $startrec)  ;
        $self->{'_listrev'}->bind_param(5, $endrec)  ;

        return undef unless $self->{'_listrev'}->execute() ;
        my $foo = $self->{'_listrev'}->fetchall_arrayref({}) ;

        @$rectainer = @$foo ;
        @$foo = () ;
        return(scalar(@$rectainer)) ;
}

## END CODE ##

Thanks!
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.