sql >> Database >  >> RDS >> Mysql

Bijwerken van gegevenssetquery na invoer van parameters in BIRT

Ervan uitgaande dat u zich in een Oracle DB bevindt (andere systemen kunnen zich anders gedragen), moet u zich ervan bewust zijn dat een bindvariabele (in JDBC-spraak:het vraagteken) een scalaire waarde kan vervangen alleen, bijv. een tekenreeks of een cijfer.

Maar je wilt zoiets als een lijst van getallen als invoer. Dus een bindvariabele zal je in dit geval niet helpen.

Dit is waarschijnlijk de gemakkelijkste manier om te bereiken wat je wilt:

Schrijf in uw vraag:

WHERE column_name in (1) -- $REPLACE_THIS$

Houd er rekening mee dat ik een opmerking in de query als markering gebruik. Vervolgens in de beforeOpen van de query gebeurtenis, wijzigt u de vraagtekst als volgt:

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

Dat is het.




  1. Eval() geeft aangepaste waarde weer als null

  2. Oracle Converteer seconden naar uren:minuten:seconden

  3. Geldige indelingsreeksvervangingen voor de SQLite StRFtime()-functie

  4. Splits IPv4-adres in 4 cijfers in Oracle sql