Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Atualizando a consulta do conjunto de dados após a entrada do parâmetro no BIRT


Supondo que você esteja em um banco de dados Oracle (outros sistemas podem se comportar de maneira diferente), você deve estar ciente de que uma variável de ligação (no discurso JDBC:o ponto de interrogação) pode substituir um valor escalar apenas, por exemplo uma string ou um número.

Mas você quer algo como uma lista de números como entrada. Assim, uma variável de ligação não irá ajudá-lo neste caso.

Provavelmente, a maneira mais fácil de alcançar o que você deseja é esta:

Em sua consulta, escreva:
WHERE column_name in (1) -- $REPLACE_THIS$

Observe que estou usando um comentário na consulta como um marcador. Em seguida, no beforeOpen da consulta evento, modifique o texto da consulta assim:
// 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 + ")";

É isso.