Как передать входной файл запроса SQL в подпрограмму Perl dbi - PullRequest
0 голосов
/ 16 июля 2011

Мне нравится создавать общий Perl-скрипт, который будет вводить SQL-запрос из отдельного файла и использовать его с Perl DBI (подпрограмма), а не жестко кодировать инструкцию. Может кто-нибудь показать мне пример, как это сделать?

Например, у меня есть это в подпрограмме:

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 Ответ

1 голос
/ 16 июля 2011

Это было бы общей идеей:

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

Конечно, это не обязательно обрабатывает комментарии, или ; символы в строках в кавычках и т. Д. Но это должно направить вас в правильном направлении.

Или, если вы знаете, что файл будет содержать только одно утверждение:

undef $/;
open FH, "< file.sql";
my $sth = $dbh->prepare(<FH>);
close FH;
$sth->execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...