У меня есть BIRT-Report, в котором я хочу показать определенный объем данных (Hi Capapt Очевидный). Все идет нормально. Теперь данные лежат в базе данных MSSQL, и я подключаюсь к нему с помощью драйвера jdbc, все это работает отлично.Birt Report Parameter as WHERE-clause
Проблема в том, что я хочу передать параметр отчета «запрос» в этот отчет. Я знаю, как передать параметры отчета следующим образом: запрос:
SELECT * FROM table WHERE field = ?
И затем вы определяете параметр в Dataset-параметров.
Теперь то, что я хочу сделать, это следующее:
SELECT * FROM table ?
Где мой параметр содержит что-то вроде
WHERE field1 = 'xyz' AND field2 = 2
Проблема заключается в том, что BIRT автоматически добавляет апостроф в начале и в конец каждого параметра строки, чтобы окончательный запрос выглядел так:
SELECT * FROM table 'WHERE field1 = 'xyz' AND field2 = 2'
Это приводит к тому, что MSSQL не может обрабатывать запрос по очевидным причинам. Как вы можете это исправить?
Заранее спасибо
Есть ли причина, по которой вы не хотите кодировать свой запрос как 'SELECT * FROM table WHERE field =? и field2 =? '? (Можно запрограммировать свой запрос по желанию с помощью динамического sql, но это откроет ваш код для риска атаки SQL-инъекций - см. Http://xkcd.com/327/.) –