首頁 > 資料庫 > mysql教程 > 如何在 JasperReports 查詢中將參數傳遞給 WHERE 和 ORDER BY 子句?

如何在 JasperReports 查詢中將參數傳遞給 WHERE 和 ORDER BY 子句?

DDD
發布: 2025-01-18 06:37:09
原創
678 人瀏覽過

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

在 JasperReports 中建立查詢時,您可能需要從使用者傳遞動態參數。為此,有兩種參數引用的語法表達式:$P{}$P!{}

$P{} 文法

$P{} 語法主要用於在 WHERE 子句中設定輸入參數值。它採用類似 java.sql.PreparedStatement 的「智慧」替換演算法。例如,java.lang.String 參數將被替換為帶引號的值,而 java.lang.Integer 參數將被替換為數值。

例如,考慮以下參數:

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

原始表達式(待替換):

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

結果將是:

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

$P!{} 文法

$P!{} 語法主要用於簡單的替換。它對參數值進行逐字替換,沒有任何特殊處理。

例如,考慮以下參數:

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

原始表達式(待替換):

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

結果將是:

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

在您的案例中的用法

根據您的問題,您需要動態設定 WHERE 和 ORDER BY 子句,您可以使用以下表達式:

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

其中 $P{key} 是一個 java.lang.String 參數。如果 $P!{clause} 值需要引號的值,可以改用以下表達式:

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

以上是如何在 JasperReports 查詢中將參數傳遞給 WHERE 和 ORDER BY 子句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板