我喜欢创建一个通用的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};
}
大致的思路是:
$/ = ';';
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();