Zakładając, że jesteś w bazie danych Oracle (inne systemy mogą zachowywać się inaczej), powinieneś mieć świadomość, że zmienna bind (w mowie JDBC:znak zapytania) może zastąpić wartość skalarną tylko, np. ciąg lub cyfrę.
Ale chcesz coś takiego jak lista liczb jako danych wejściowych. Dlatego zmienna bind nie pomoże w tym przypadku.
Prawdopodobnie najłatwiejszym sposobem osiągnięcia tego, czego chcesz, jest:
W zapytaniu napisz:
WHERE column_name in (1) -- $REPLACE_THIS$
Zauważ, że używam komentarza w zapytaniu jako znacznika. Następnie w beforeOpen
zapytania zdarzenia, zmodyfikuj tekst zapytania w następujący sposób:
// 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 wszystko.