Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menghantar Parameter ke WHERE dan ORDER BY Klausa dalam Pertanyaan JasperReports?
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$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$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>
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!