sql >> Databáze >  >> RDS >> Mysql

Aktualizace dotazu na sadu dat po zadání parametru v BIRT

Za předpokladu, že používáte Oracle DB (jiné systémy se mohou chovat jinak), měli byste si být vědomi toho, že proměnná vazby (v řeči JDBC:otazník) může nahradit skalární hodnotu pouze, např. řetězec nebo číslo.

Ale chcete něco jako seznam čísel jako vstup. Proměnná vazby vám tedy v tomto případě nepomůže.

Pravděpodobně nejjednodušší způsob, jak dosáhnout toho, co chcete, je tento:

Ve svém dotazu napište:

WHERE column_name in (1) -- $REPLACE_THIS$

Všimněte si, že v dotazu používám komentář jako značku. Poté v beforeOpen dotazu událost, upravte text dotazu takto:

// 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 je ono.




  1. Automatické mazání zaseknutých procesů v MS SQL Server

  2. uložit seznam<třída modelu> do sqlite

  3. Jak vrátit číslo dne s příponou v MariaDB

  4. VYBRAT řádek podle DATEPART()