Thread: &main::execute undefined?

&main::execute undefined?

From
Andrew Magnus
Date:

Ok, I'm running Postgres and RH8 right out-of-the-box.  DBD::Pg is installed, and I'm using Perl 5.8 -- all right out-of-the-box.  When my script gets to this line:

 

$statementH = execute() || die $statementH->errstr ;  # this is line 10 btw

 

I get:

 

Undefined subroutine &main::execute called at ./test.pl line 10.

 

As far as I can tell, it should work --but doesn't so I must be missing something.  If you want to tackle this one, everything is right below:  (PS:  the query going into $sql I got with help of you all, so thanks!)

========

#! /usr/bin/perl -w

use DBI ;

$dbH = (DBI->connect("DBI:Pg:dbname=lanparty-reservations","andrew","shrp1234")) ;
$sql = "select c.relname as table from pg_class c where c.relkind = 'r' and c.relname !~ '^pga_' and c.relname !~ '^pg_'" ;

$statementH = $dbH->prepare($sql) ;
$statementH = execute() || warn $statementH->errstr ;



Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now

Re: &main::execute undefined?

From
Oliver Elphick
Date:
On Thu, 2002-11-21 at 05:37, Andrew Magnus wrote:
>
> Ok, I'm running Postgres and RH8 right out-of-the-box.  DBD::Pg is
installed, and I'm using Perl 5.8 -- all right out-of-the-box.  When my
...
> Undefined subroutine &main::execute called at ./test.pl line 10.
...
> ========
>
> #! /usr/bin/perl -w
>
> use DBI ;
>
>
> $dbH = (DBI->connect("DBI:Pg:dbname=lanparty-reservations","andrew","shrp1234")) ;
> $sql = "select c.relname as table from pg_class c where c.relkind = 'r' and c.relname !~ '^pga_' and c.relname !~
'^pg_'"; 
>
> $statementH = $dbH->prepare($sql) ;
> $statementH = execute() || warn $statementH->errstr ;

$statementH->execute() || warn $statementH->errstr ;
$relname = $statementH->fetchrow_array();
$statementH->finish();

--
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight, UK
http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
                 ========================================
     "A new commandment I give unto you; That ye love one
      another. As I have loved you, so ye also must love one
      another.  By this shall all men know that ye are my
      disciples, if ye have love one to another."
                         John 13:34,35


&main::execute undefined?

From
Andrew Magnus
Date:

Thanks, but it still doesn't work. :-(

 

For everyone else, the error I'm getting is:

 

Undefined subroutine &main::execute called at ./test.pl line 10.

 

where line 10 is:

 

$statementH = execute() || warn $statementH->errstr ;

 

 Oliver Elphick <olly@lfix.co.uk> wrote:

On Thu, 2002-11-21 at 05:37, Andrew Magnus wrote:
>
> Ok, I'm running Postgres and RH8 right out-of-the-box. DBD::Pg is
installed, and I'm using Perl 5.8 -- all right out-of-the-box. When my
...
> Undefined subroutine &main::execute called at ./test.pl line 10.
...
> ========
>
> #! /usr/bin/perl -w
>
> use DBI ;
>
>
> $dbH = (DBI->connect("DBI:Pg:dbname=lanparty-reservations","andrew","shrp1234")) ;
> $sql = "select c.relname as table from pg_class c where c.relkind = 'r' and c.relname !~ '^pga_' and c.relname !~ '^pg_'" ;
>
> $statementH = $dbH->prepare($sql) ;
> $statementH = execute() || warn $statementH->errstr ;

$statementH->execute() || warn $statementH->errstr ;
$relname = $statementH->fetchrow_array();
$statementH->finish();

--
O liver Elphick Oliver.Elphick@lfix.co.uk
Isle of Wight, UK
http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C
========================================
"A new commandment I give unto you; That ye love one
another. As I have loved you, so ye also must love one
another. By this shall all men know that ye are my
disciples, if ye have love one to another."
John 13:34,35



Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now

Re: &main::execute undefined?

From
Mike Beachy
Date:
On Thu, Nov 21, 2002 at 10:46:09AM -0800, Andrew Magnus wrote:
> Thanks, but it still doesn't work. :-(
>
> For everyone else, the error I'm getting is:
>
> Undefined subroutine &main::execute called at ./test.pl line 10.
>
> where line 10 is:
>
> $statementH = execute() || warn $statementH->errstr ;

You need to read the documentation for DBI.  What Oliver's terse example
was saying is that you are using the wrong syntax. execute() is a
statement handle method, not a method for creating a statement handle.

Read the docs - perldoc DBI

mike

>  Oliver Elphick <olly@lfix.co.uk> wrote:
> $statementH->execute() || warn $statementH->errstr ;
> $relname = $statementH->fetchrow_array();
> $statementH->finish();

Re: &main::execute undefined?

From
dev@archonet.com
Date:
>
> Thanks, but it still doesn't work. :-(
>
> For everyone else, the error I'm getting is:
>
> Undefined subroutine &main::execute called at ./test.pl line 10.
>
> where line 10 is:
>
> $statementH = execute() || warn $statementH->errstr ;

Read Oliver's message again. The execute() is a method not a function in
main's namespace.

$statementH->execute() is the way to call it. Read the DBI documentation
for examples.

- Richard Huxton


>
>  Oliver Elphick <olly@lfix.co.uk> wrote:On Thu, 2002-11-21 at 05:37,
> Andrew Magnus wrote:
>>
>> Ok, I'm running Postgres and RH8 right out-of-the-box. DBD::Pg is
> installed, and I'm using Perl 5.8 -- all right out-of-the-box. When my
> ...
>> Undefined subroutine &main::execute called at ./test.pl line 10.
> ...
>> ========
>>
>> #! /usr/bin/perl -w
>>
>> use DBI ;
>>
>>
>> $dbH =
>> (DBI->connect("DBI:Pg:dbname=lanparty-reservations","andrew","shrp1234"))
>> ;
>> $sql = "select c.relname as table from pg_class c where c.relkind = 'r'
>> and c.relname !~ '^pga_' and c.relname !~ '^pg_'" ;
>>
>> $statementH = $dbH->prepare($sql) ;
>> $statementH = execute() || warn $statementH->errstr ;
>
> $statementH->execute() || warn $statementH->errstr ;
> $relname = $statementH->fetchrow_array();
> $statementH->finish();
>
> --
> Oliver Elphick Oliver.Elphick@lfix.co.uk


Re: &main::execute undefined?

From
Oliver Elphick
Date:
On Thu, 2002-11-21 at 18:46, Andrew Magnus wrote:
>
> Thanks, but it still doesn't work. :-(

In what way?

> For everyone else, the error I'm getting is:
>
> Undefined subroutine &main::execute called at ./test.pl line 10.
>
> where line 10 is:
>
> $statementH = execute() || warn $statementH->errstr ;

You can't do that.  execute is part of the DBI package, so you can't
just call it as if it were declared in your own program.  The way I said
is the standard way to do it, so what goes wrong with that?


>  Oliver Elphick <olly@lfix.co.uk> wrote:On Thu, 2002-11-21 at 05:37, Andrew Magnus wrote:
...
> $statementH->execute() || warn $statementH->errstr ;


From "man 3 DBI":

      The typical method call sequence for a "SELECT" statement is:

        prepare,
         execute, fetch, fetch, ...
         execute, fetch, fetch, ...
         execute, fetch, fetch, ...

      for example:

        $sth = $dbh->prepare("SELECT foo, bar FROM table WHERE baz=?");

        $sth->execute( $baz );

        while ( @row = $sth->fetchrow_array ) {
         print "@row\n";
        }

--
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight, UK
http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
                 ========================================
     "Can two walk together, except they be agreed?"
                                     Amos 3:3