このスクリプトは、%ワイルドカードを必要としないすべてのコマンドで正常に機能します。?をラップしようとすると %?%で、バインドエラーが発生します。また、スクリプトの実行時に引数に%value%を追加しようとしましたが、同じエラーが発生します。perlのSQLDBIコマンドに引数を置き換える方法はありますか?
前もって感謝します。
#!/usr/bin/perl
use DBI;
use Text::Diff;
use File::stat;
use Fcntl ':flock';
open (LOCK_FH, $0) || die "$0 for lock: $!\n";
flock (LOCK_FH, LOCK_EX|LOCK_NB) || die "$0 already running\n";
$BINDVAR = $ARGV[0];
$dbname = "COnnectionDetailsHere";
$un = "username";
$pw = "password";
my $dbh = DBI->connect ( $dbname, $un, $pw, { PrintError=>1, RaiseError=>1, AutoCommit=>0, LongReadLen=>5056}) or die "Couldn't connect to DB: " . DBI->errstr;
$sql = <<SQL
select * from foo where bar like '%?%' '?'
SQL
;
$stm = $dbh->prepare($sql) or die "SQL failed to prepare $DBI::errstr\n";
$stm->bind_param(1,($BINDVAR));
$stm->execute() or die "Couldn't execute the statement: " . $stm->errstr;