SQL "IN" 述語を使用して JasperReports に変数パラメータ リストを渡す
JasperReports と SQL "IN" 述語を使用する場合、パラメーター リストをクエリに動的に渡すために必要です。この記事では、Java プログラムで整数値のリストを含むパラメーターの値を設定する方法を説明します。
以下の SQL クエリには、1 つ以上の整数値を含むパラメーター リスト "roles" が必要です。
SELECT customer_name AS NAME, id_customer AS ID FROM customer WHERE customer_role IN ($P{roles})
Java で「roles」パラメータの値を動的に設定するには、次のように提供される「$X」変数を使用します。 JasperReports:
// Assume the "roles" parameter is a list of integers List<Integer> roles = ...; // Convert the list to a comma-separated string String roleString = roles.stream().map(String::valueOf).collect(Collectors.joining(",")); // Set the parameter value using the "$X" variable parameters.put("roles", "$X{IN,customer-role," + roleString + "}");
「$X{IN,column-name,parameter-name}」構文を使用すると、比較する列、パラメータ名、値のリストを指定できます。
たとえば、次のクエリでは、「roles」パラメータを使用して、という列をフィルタリングします。 "customer_role":
SELECT * FROM customer WHERE $X{IN,customer_role,roles}
このソリューションにより、動的パラメータ リストを JasperReports の SQL "IN" 述語に渡すことができ、指定された値に基づいてクエリがデータを正しくフィルタリングできるようになります。
以上が変数パラメータリストをJasperReportsのSQL「IN」述語に渡す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。