sql >> Database teknologi >  >> RDS >> Mysql

Opdatering af datasætforespørgsel efter parameterinput i BIRT

Hvis du antager, at du er på en Oracle DB (andre systemer kan opføre sig anderledes), skal du være opmærksom på, at en bindevariabel (i JDBC-tale:spørgsmålstegnet) kan erstatte en skalær værdi kun f.eks. en streng eller et tal.

Men du vil have noget som en liste af tal som input. En bindevariabel vil derfor ikke hjælpe dig i dette tilfælde.

Sandsynligvis den nemmeste måde at opnå det, du ønsker, er denne:

I din forespørgsel skal du skrive:

WHERE column_name in (1) -- $REPLACE_THIS$

Bemærk, at jeg bruger en kommentar i forespørgslen som en markør. Derefter i forespørgslens beforeOpen hændelse, skal du ændre forespørgselsteksten som denne:

// 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 det.




  1. En oversigt over forskellige hjælpeplanknuder i PostgreSQL

  2. Sådan fungerer LIKE-operatøren i MySQL

  3. 10 Microsoft Access-tip til oprettelse af udvalgte forespørgsler

  4. omskriv ?id=__ til sidetitel gemt i db række