0

I like to create a generic perl script that will input sql query from a separate file and use it with perl dbi (subroutine), rather than hardcoding the statement. Can someone show me an example how to do this?

For example I have this in a sub routine:

sub get_val
{
  my $sth = $dbh->prepare(q{SELECT count(*) AS COUNT FROM TEST1) ||
      die ("Can't connect: ".$DBI::errstr."\n");         
  $sth->execute;
  my $row = $sth->fetchrow_hashref;
  $sth->finish;
  return $row->{COUNT};
}

1 Answer 1

1

This would be the general idea:

$/ = ';';
open FH, "< file.sql";
while (<FH>) {
    $dbh->do($_);
    # or:
    # my $sth = $dbh->prepare($_);
    # $sth->execute();
}
close FH;

Of course this won't necessarily handle comments, or ; characters in quoted strings, etc. But this should head you in the right direction.

Or if you know the file will only contain a single statement:

undef $/;
open FH, "< file.sql";
my $sth = $dbh->prepare(<FH>);
close FH;
$sth->execute();
Sign up to request clarification or add additional context in comments.

2 Comments

thank you. the statements will be pretty simple and short. i will try this.
I don't understand the specific meaning of your edits, but I expanded my answer. Hopefully it helps?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.