2011-07-15 34 views
0

我喜歡創建一個通用perl腳本,該腳本將從單獨的文件中輸入sql查詢,並將其與perl dbi(子例程)一起使用,而不是硬編碼該語句。有人能告訴我一個例子如何做到這一點?如何將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

這將是總體思路:

$/ = ';'; 
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(); 
+0

謝謝。這些陳述將非常簡單和簡短。我會試試這個。 – cjd143SD

+0

我不明白你編輯的具體含義,但我擴展了我的答案。希望它有幫助嗎? – Flimzy

+0

得到它的工作。謝謝你的幫助! – cjd143SD