sql >> Base de Datos >  >> RDS >> Mysql

Actualización de la consulta del conjunto de datos después de la entrada de parámetros en BIRT

Suponiendo que está en una base de datos Oracle (otros sistemas pueden comportarse de manera diferente), debe tener en cuenta que una variable de vinculación (en el lenguaje JDBC:el signo de interrogación) puede reemplazar un valor escalar solamente, p. una cadena o un número.

Pero quieres algo como una lista de números como entrada. Por lo tanto, una variable de vinculación no lo ayudará en este caso.

Probablemente la forma más fácil de lograr lo que quieres es esta:

En su consulta, escriba:

WHERE column_name in (1) -- $REPLACE_THIS$

Tenga en cuenta que estoy usando un comentario en la consulta como marcador. Luego, en la consulta beforeOpen evento, modifique el texto de consulta de esta manera:

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

Eso es todo.