Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Aktualizacja zapytania zbioru danych po wprowadzeniu parametrów w BIRT

Zakładając, że jesteś w bazie danych Oracle (inne systemy mogą zachowywać się inaczej), powinieneś mieć świadomość, że zmienna bind (w mowie JDBC:znak zapytania) może zastąpić wartość skalarną tylko, np. ciąg lub cyfrę.

Ale chcesz coś takiego jak lista liczb jako danych wejściowych. Dlatego zmienna bind nie pomoże w tym przypadku.

Prawdopodobnie najłatwiejszym sposobem osiągnięcia tego, czego chcesz, jest:

W zapytaniu napisz:

WHERE column_name in (1) -- $REPLACE_THIS$

Zauważ, że używam komentarza w zapytaniu jako znacznika. Następnie w beforeOpen zapytania zdarzenia, zmodyfikuj tekst zapytania w następujący sposób:

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dodanie relacji jeden do wielu do rodzica/dziecka odnoszącego się do siebie

  2. Nie można zainstalować mysql2 gem

  3. Jak usunąć zduplikowane wiersze i zaktualizować tabelę

  4. Numeracja wierszy mysql resetuje wszystkie inne wartości rekordów

  5. mysql select mający wiele n do n