2

Perl DBI ステートメントがあります

my $sql_statement = "select c.* ".
                    "from meter_category c ".
                    "where c.category = ".$current_category." ".
                    "and c.effective_date <= ".
                    $DBHdl->quote($time_stamp)." ".
                    "and c.meter_size = ".$meter_size." ".
                    "order by c.effective_date desc ; ";

$DBHdlInformix データベース ハンドルです。

ステートメントは次のようになります。

select c.* 
from meter_category c 
where c.category = 1 
and c.effective_date <= '09/20/2013'
and c.meter_size = 0.63 
order by c.effective_date desc ;

関数のある時点で、$current_category2 に設定してから $sql_statement を変更したいと考えています。

$current_category = 2;
eval $sql_statement

$sql_statement は変更されないため、c.category = 2.

置換を実行する方法はありますか、それともステートメントを再発行する必要がありますか?

次のコードを使用して、$current_category の各値に対するクエリを準備して実行します。

my $ptSelHdl = $DBHdl->prepare($sql_statement);

die("Could not prepare \$sql_statement for meter charge.\n")
 if(!$ptSelHdl || !$ptSelHdl->execute);
4

1 に答える 1