Za předpokladu, že používáte Oracle DB (jiné systémy se mohou chovat jinak), měli byste si být vědomi toho, že proměnná vazby (v řeči JDBC:otazník) může nahradit skalární hodnotu pouze, např. řetězec nebo číslo.
Ale chcete něco jako seznam čísel jako vstup. Proměnná vazby vám tedy v tomto případě nepomůže.
Pravděpodobně nejjednodušší způsob, jak dosáhnout toho, co chcete, je tento:
Ve svém dotazu napište:
WHERE column_name in (1) -- $REPLACE_THIS$
Všimněte si, že v dotazu používám komentář jako značku. Poté v beforeOpen
dotazu událost, upravte text dotazu takto:
// 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 + ")";
To je ono.