Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menghantar Parameter ke WHERE dan ORDER BY Klausa dalam Pertanyaan JasperReports?

Bagaimana untuk Menghantar Parameter ke WHERE dan ORDER BY Klausa dalam Pertanyaan JasperReports?

DDD
DDDasal
2025-01-18 06:37:09730semak imbas

How to Pass Parameters to WHERE and ORDER BY Clauses in JasperReports Queries?

Apabila membina pertanyaan dalam JasperReports, anda mungkin perlu menghantar parameter dinamik daripada pengguna. Untuk tujuan ini, terdapat dua ungkapan sintaks untuk rujukan parameter: $P{} dan $P!{}.

$P{} Tatabahasa

Sintaks

$P{} digunakan terutamanya untuk menetapkan nilai parameter input dalam klausa WHERE. Ia menggunakan algoritma penggantian "pintar" serupa dengan java.sql.PreparedStatement. Contohnya, parameter java.lang.String akan digantikan dengan nilai yang disebut dan parameter java.lang.Integer akan digantikan dengan nilai angka.

Sebagai contoh, pertimbangkan parameter berikut:

参数名称 参数类型 参数值
eventName java.lang.String Olympic Games
eventType java.lang.Integer 2

Ungkapan asal (untuk diganti):

<code class="language-sql">SELECT startDate, endDate, rating
FROM events
WHERE name=$P{eventName} AND type=$P{eventType}</code>

Hasilnya ialah:

<code class="language-sql">SELECT startDate, endDate, rating
FROM events
WHERE name='Olympic Games' AND type=2</code>

$P!{} Tatabahasa

Sintaks

$P!{} digunakan terutamanya untuk penggantian mudah. Ia menggantikan nilai parameter secara verbatim, tanpa sebarang rawatan khas.

Sebagai contoh, pertimbangkan parameter berikut:

参数名称 参数类型 参数值
tableName java.lang.String events
eventName java.lang.String Olympic Games

Ungkapan asal (untuk diganti):

<code class="language-sql">SELECT startDate, endDate, rating
FROM $P!{tableName}
WHERE name='$P!{eventName}'</code>

Hasilnya ialah:

<code class="language-sql">SELECT startDate, endDate, rating
FROM events
WHERE name='Olympic Games'</code>

Penggunaan dalam kes anda

Mengikut soalan anda, anda perlu menetapkan WHERE dan ORDER BY klausa secara dinamik, anda boleh menggunakan ungkapan berikut:

<code class="language-sql">SELECT name, phone, email
FROM company
WHERE $P!{clause} = $P{key}
ORDER BY $P!{order}</code>

di mana $P{key} ialah parameter java.lang.String. Jika nilai $P!{clause} memerlukan nilai yang disebut, anda boleh menggunakan ungkapan berikut sebagai ganti:

<code class="language-sql">SELECT name, phone, email
FROM company
WHERE $P!{clause} = '$P!{key}'
ORDER BY $P!{order}</code>

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Parameter ke WHERE dan ORDER BY Klausa dalam Pertanyaan JasperReports?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn