Mysql
 sql >> Database >  >> RDS >> Mysql

Aggiornamento della query del set di dati dopo l'immissione di parametri in BIRT

Supponendo che tu sia su un DB Oracle (altri sistemi potrebbero comportarsi in modo diverso), dovresti essere consapevole che una variabile bind (in JDBC speech:il punto interrogativo) può sostituire un valore scalare solo, ad es. una stringa o un numero.

Ma vuoi qualcosa come un elenco di numeri come input. Quindi una variabile bind non ti aiuterà in questo caso.

Probabilmente il modo più semplice per ottenere ciò che desideri è questo:

Nella tua domanda, scrivi:

WHERE column_name in (1) -- $REPLACE_THIS$

Nota che sto usando un commento nella query come indicatore. Quindi, nel beforeOpen della query evento, modifica il testo della query in questo modo:

// 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 + ")";

Questo è tutto.