0

DBI 経由で Perl から Oracle のいくつかのレコードを更新したいと思います。これが私が試したことです:

my $q = $dbh->prepare("UPDATE table SET period='$PERIOD' WHERE field LIKE '%$PERIOD_FIELD'"); $q->execute();

問題は、変数 $PERIOD_FIELD に次のようなものがあることです: "@@XYZ@asd asd asd "

したがって、フィールド列が何か+ $PERIOD_FIELDで終わるすべてのレコードを更新したいと思います。

perl が次の行に到達$q->execute();すると、単にフリーズします。ctrl + c で実行中のプログラムを停止する必要があります。

% という文字に問題があることはわかっていますが (削除してもプログラムがフリーズしないため)、スクリプトを正しく呼び出す方法がわかりません。

誰か私にヒントがありますか?ありがとうございました!

4

2 に答える 2

0
my $q = $dbh->prepare("UPDATE table SET period='$PERIOD' WHERE field LIKE chr(37)||'$PERIOD_FIELD'");
$q->execute();
于 2013-04-09T14:42:32.233 に答える
0

上記のコードはすべて正しいことが判明しましたが、残念ながらテーブルは Toad によってロックされていました。:| Toad でロールバックまたはコミットを実行するか、Toad を閉じると、問題が解決しました。

ヒントをくれた皆さんに感謝し、誤解を招いて申し訳ありません。

于 2013-04-12T12:01:40.253 に答える