Crystal Reportsでは、SQLをレポートのパラメータに文字列として直接渡すことができ、レポートの実行時にSQLが解決されます。BIRT SQLをクエリのパラメータに渡す
たとえば、前月に関連するデータのレポートを毎月の始めに実行するようにスケジュールするとします。
SELECT
sum(jobid) jobs
FROM
job
WHERE
created_date >= {?StartDate}
and created_date < {?EndDate}
代わりの日付フィールドに開始日と終了日のパラメータを設定し、文字列と渡すパラメータを設定することができ、毎月のレポートに送信されたパラメータを更新すること:特定のレポートのクエリは次のようになります。
StartDate = add_months(trunc(sysdate, 'mm'), -1)
EndDate = trunc(sysdate, 'mm')
このように、スケジュールされたレポートが実行されるたびに、実行する正しい期間が自動的に決定されます。これは、Crystalレポートが引数を 'trunc(sysdate、' mm ')'ではなくリテラルとして渡すためです。
このようなBIRTレポートパラメータにSQLを渡すことはできますか?私はBIRT plug-in for Eclipseを使用しており、BIRTが単一引用符で完全なSQL文字列としてクエリにパラメータを渡していることを示唆するORACLEエラーが続いています。
SQLをレポートパラメータに渡す理由を説明できますか? MystikSpiralが指摘するように、SQLインジェクション攻撃の危険性があります。http://xkcd.com/327/ –
SQL攻撃の危険にさらされているかどうかは状況に依存しませんか?これがすべてのサーバー側で実行されており、生のユーザー入力がない場合、私はリスクを見ません。 – Rebzie