sql >> Databasteknik >  >> RDS >> Mysql

Uppdatering av datamängdsfråga efter parameterinmatning i BIRT

Om du antar att du använder en Oracle DB (andra system kan bete sig annorlunda) bör du vara medveten om att en bindningsvariabel (i JDBC-tal:frågetecknet) kan ersätta ett skalärt värde endast, t.ex. en sträng eller ett nummer.

Men du vill ha något som en lista av siffror som indata. En bindningsvariabel kommer därför inte att hjälpa dig i det här fallet.

Förmodligen det enklaste sättet att uppnå det du vill är detta:

I din fråga skriver du:

WHERE column_name in (1) -- $REPLACE_THIS$

Observera att jag använder en kommentar i frågan som en markör. Sedan, i frågans beforeOpen händelse, ändra frågetexten så här:

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

Det var allt.




  1. Hur man får MySQL-status i en fråga

  2. PDO - Hämta Assoc i en "while"-loop

  3. När behöver jag använda start-/slutblock och nyckelordet Go i SQL Server?

  4. Mysql:Hur man får varje rad som har mer än ett visst antal decimaler efter pricken