Firebird を使用するアプリケーションがあります。アプリケーションは、たとえばアイテムをリストするたびに、クエリの長いリストを実行します。これらのクエリを取り出して、自分の Java アプリケーションで実行したいと考えています (リストを操作したり、表示したりできるようにするためです)。
問題は...アプリケーションにデバッグオプションがあり、アプリケーションが実行するクエリの種類を確認できることです。元のクエリのいくつかには@
兆候がありました。を含むクエリを実行すると@
、エラーが発生します。クエリのその部分を取り出すと、すべてが実行され、「期待どおり」に機能します。チャームのように、エラーはありません。
詳細なエラー メッセージ:
エラー コード: -104
トークンが不明です - 行 8、列 32
必要に応じてエスケープ文字を自動的に適用する IntelliJ IDEA を使用します。
元のクエリからのそのような部分:
SELECT TBL4487."Id" "database.id",
TBL4487."Code" "database.code",
TBL4487."Name" "database.name",
TBL4487."Barcode" "database.barcode",
TBL4488."Name" "Datagroup",
TBL4489."Name" "Mey",
(SELECT FIRST 1 TBL4494."Price" / (CASE
WHEN (TBL4487."GrossPrices" = @Param4495) THEN 1
ELSE (TBL4492."Rate" + 100) / 100
END) "productprice.price"
FROM "ProductPrice" TBL4494
WHERE (TBL4494."Product" = TBL4487."Id") AND (TBL4494."PriceCategory" = @Param4497) AND (TBL4494."ValidFrom" <= @Param4498) AND (TBL4494."Currency" = @Param4499) AND (TBL4494."QuantityUnit" = TBL4487."QuantityUnit")
ORDER BY TBL4494."ValidFrom" DESC) "xyz",
(SELECT FIRST 1 TBL4500."Price" / (CASE
WHEN (TBL4487."GrossPrices" = @Param4501) THEN 1
ELSE (TBL4492."Rate" + 100) / 100
問題は、このクエリをどのように実行できるかということです。@
シンボルを置き換えるにはどうすればよいですか?