First, prepare() is not a statement handle method, it's a database handle one. Apart from that, your way seems appropriate for what you want to do. In the TIMTOWTDI philosophy, you could set up the SQL statement and placeholders in the conditional and execute at the end. Something along the lines of
my ($sql, @placeholders); if (@rows == 0) { $sql = qq{SELECT 1}; @placeholders = ($svr1, $ap1, $in); } else { $sql = qq{SELECT 2}; @placeholders = ($svr1, $ap); } my $sth = $dbh->prepare($sql); $sth->execute(@placeholders);
Looks more wordy, but that's how I usually like to do it.
Update: I had a comment for @rows == "0", but apparently perl is smart enough to DWIM and guess the correct context, never producing any warning or some such, whatever the case may be (@rows eq "0", @rows eq 0 and @rows == 0 all work).
In reply to Re: Using If statement to set DBI prepare
by Fang
in thread Using If statement to set DBI prepare
by dtharby
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |