2011-07-15 20 views
0

私は、別のファイルからSQLクエリを入力し、その文をハードコードするのではなく、perl dbi(サブルーチン)とともに使用する一般的なperlスクリプトを作成したい。誰かが私にこれを行う方法の例を示すことができますか?例えばSQLクエリ入力ファイルをperl dbiサブルーチンに渡す方法

私は、サブ・ルーチンでこれを持っている:これは必ずしも、コメントを扱う、または引用された中;文字はありません。もちろん、

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

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

これが一般的な考え方だろうしかし、これは正しい方向に向かうはずです。

またはファイルがひとつの文のみであることがわかっている場合:

undef $/; 
open FH, "< file.sql"; 
my $sth = $dbh->prepare(<FH>); 
close FH; 
$sth->execute(); 
+0

はあなたに感謝。ステートメントはかなりシンプルで短くなります。私はこれを試みます。 – cjd143SD

+0

私はあなたの編集の具体的な意味を理解していませんが、私は答えを広げました。うまくいけば助けてくれますか? – Flimzy

+0

が動作しました。ご協力いただきありがとうございます! – cjd143SD

関連する問題