Om du antar att du använder en Oracle DB (andra system kan bete sig annorlunda) bör du vara medveten om att en bindningsvariabel (i JDBC-tal:frågetecknet) kan ersätta ett skalärt värde endast, t.ex. en sträng eller ett nummer.
Men du vill ha något som en lista av siffror som indata. En bindningsvariabel kommer därför inte att hjälpa dig i det här fallet.
Förmodligen det enklaste sättet att uppnå det du vill är detta:
I din fråga skriver du:
WHERE column_name in (1) -- $REPLACE_THIS$
Observera att jag använder en kommentar i frågan som en markör. Sedan, i frågans beforeOpen
händelse, ändra frågetexten så här:
// 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 + ")";
Det var allt.