in reply to Re: Query Subroutine
in thread Query Subroutine

So do you mean like this?
sub run_query { my ($query) = @_; # Run Query print "$query\n"; ### Prepare a SQL statement for execution $prepare_exe = $dbv->prepare( "$query"); ### Execute the statement in the database $prepare_exe->execute; my @new_row; # Each element will be comma seperated while ( @row = $prepare_exe->fetchrow_array( ) ) { $string = join(",", @row); $string = $string."\n"; #print "$string\n"; # Will contain all rows push(@new_row, $string); } return @new_row; $prepare_exe->finish; }
Thanks...

Replies are listed 'Best First'.
Re^3: Query Subroutine
by chromatic (Archbishop) on Aug 08, 2005 at 04:13 UTC

    Right. You ought to do that for the other lexical variables too, to avoid similar problems (though with them being all scalars and you not calling any other code likely to change them, you're safe for now). I would write that subroutine more like:

    sub run_query { my ($query) = @_; my $sth = $dbv->prepare( $query ); $sth->execute(); my @new_row; while ( my @row = $sth->fetchrow_array() ) { my $string = join( ',', @row ); $string .= "\n"; push( @new_row, $string ); } return @new_row; }

    I removed the code after the return call because Perl will never execute it. (Further, if you exhaust the result set, as this code does, there's no need to call finish().)

      Chromatic thanks for the information.... I really appreciate it.