Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Memperbarui kueri Kumpulan Data setelah input parameter di BIRT

Dengan asumsi bahwa Anda menggunakan Oracle DB (sistem lain mungkin berperilaku berbeda), Anda harus menyadari bahwa variabel bind (dalam pidato JDBC:tanda tanya) dapat menggantikan nilai skalar saja, mis. string atau angka.

Tetapi Anda menginginkan sesuatu seperti daftar angka sebagai input. Dengan demikian, variabel pengikat tidak akan membantu Anda dalam kasus ini.

Mungkin cara termudah untuk mencapai apa yang Anda inginkan adalah ini:

Dalam kueri Anda, tulis:

WHERE column_name in (1) -- $REPLACE_THIS$

Perhatikan bahwa saya menggunakan komentar dalam kueri sebagai penanda. Kemudian, dalam beforeOpen kueri event, ubah teks kueri seperti ini:

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

Itu saja.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih pernyataan di dalam loop dalam Prosedur Tersimpan Mysql

  2. Memilih grup catatan berurutan dengan atribut umum?

  3. MySQL:pilih * dari tabel di mana col IN (null, ) dimungkinkan tanpa OR

  4. MySQL:Jumlahkan nilai dalam subkueri

  5. Cara yang lebih baik untuk menghasilkan array json ini dari data MySql dengan php