Dengan asumsi bahwa Anda menggunakan Oracle DB (sistem lain mungkin berperilaku berbeda), Anda harus menyadari bahwa variabel bind (dalam pidato JDBC:tanda tanya) dapat menggantikan nilai skalar saja, mis. string atau angka.
Tetapi Anda menginginkan sesuatu seperti daftar angka sebagai input. Dengan demikian, variabel pengikat tidak akan membantu Anda dalam kasus ini.
Mungkin cara termudah untuk mencapai apa yang Anda inginkan adalah ini:
Dalam kueri Anda, tulis:
WHERE column_name in (1) -- $REPLACE_THIS$
Perhatikan bahwa saya menggunakan komentar dalam kueri sebagai penanda. Kemudian, dalam beforeOpen
kueri event, ubah teks kueri seperti ini:
// 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 + ")";
Itu saja.