I am trying to write something which opens this file called abstract.sql:

   select city, date from weather where temp_lo < ?

and have it $sth->execute(@ARGV)

but I am able to get DBI to force an instructive error message when I 
forget to supply command-line arguments. Instead I get

  Database handle destroyed without explicit disconnect, <A> line 1.

Here is my program:

use DBI;
use strict;

open A, 'abstract.sql' or die 'cannot open abstract.sql';

my $sql = join '', <A>;

my $connect = 'dbi:Pg:dbname=mydb';

my $dbh = DBI->connect($connect,'postgres','take_a_guess_pal',
                        { RaiseError => 1,
                          PrintError => 1
                          }
                        );

my $sth = $dbh->prepare($sql);
$sth->execute(@ARGV);   ### SHOULD THROW ERROR WHEN NO ARGS, YET
                                                 ### QUERY HAS 
PLACEHOLDER VALUES?? HOW TO FIX?

warn "ROWS ", $sth->rows;

use Data::Dumper;

open T, '>testexec.out' or die 'cannot create output file';
while (my $rec = $sth->fetchrow_hashref) {
     print Dumper($rec);
}

Reply via email to