Giả sử rằng bạn đang sử dụng Oracle DB (các hệ thống khác có thể hoạt động khác), bạn nên biết rằng một biến liên kết (trong bài phát biểu JDBC:dấu chấm hỏi) có thể thay thế một giá trị vô hướng chỉ, ví dụ:một chuỗi hoặc một số.
Nhưng bạn muốn một cái gì đó giống như một danh sách của các số dưới dạng đầu vào. Do đó, một biến liên kết sẽ không giúp bạn trong trường hợp này.
Có lẽ cách dễ nhất để đạt được những gì bạn muốn là:
Trong truy vấn của bạn, hãy viết:
WHERE column_name in (1) -- $REPLACE_THIS$
Lưu ý rằng tôi đang sử dụng nhận xét trong truy vấn làm điểm đánh dấu. Sau đó, trong beforeOpen
của truy vấn sự kiện, sửa đổi văn bản truy vấn như sau:
// construct a comma-separated string representation of your list
// based on your report parameter (exercise left to the reader)
// var replacement = my_to_sql_csv(params["my_report_parameter"].value);
// for demonstration use:
var replacement = "1,2";
// modify the `IN` expression inside the SQL
this.queryText = this.queryText.replaceAll("(1) -- $REPLACE_THIS$", "(" + replacement + ")";
Vậy là xong.