Как управлять многозначными строковыми параметрами для команды SQL в Crystal Reports

У меня есть Crystal Report, основанный на команде SQL, который, в частности, состоит из имен процедур. То, что я пытаюсь сделать, это добавить строковый параметр с несколькими значениями в команду SQL так, чтобы конечные пользователи могли вводить частичные имена процедур, и отчет будет возвращать только те соответствующие процедуры, которые соответствуют строке.

Например, пользователь должен иметь возможность вводить "%KNEE%" и "%HIP%" в параметр и возвращать все процедуры, содержащие слова "KNEE" и "HIP". Проблема в том, что я не могу понять, как манипулировать значением параметра в SQL для достижения этой цели. Я сделал это раньше с параметром отчета (в отличие от параметра команды SQL), просто добавив строку {table.procedure_name} like {?name match parameter} к формуле выбора записи, но использование того же подхода в команде SQL приводит меня к ошибке "ORA-00907: отсутствует правильная скобка".

Любые предложения о том, как я могу манипулировать многозначным строковым параметром для достижения этой цели?

2 ответа

Я не хотел бы публиковать это как ответ, потому что меня не волнует решение, но я нашел единственный способ обойти это. Мне пришлось поручить пользователям вводить "%KNEE%", "%HIP%", "%ETC%" в приглашении параметра. Тогда {table.procedure_name} как {? Name match parameter} должен работать в вашем SQL. Не оптимально, особенно для вашего сценария с%. Я хотел бы услышать, что кто-то предлагает лучшее решение, потому что я боролся с этим много раз.

Вот подход:

SELECT column0
FROM   table0
INNER JOIN (
    SELECT trim('%' || x.column_value.extract('e/text()') || '%') SEARCH
    FROM  ( SELECT 'arm,knee' options FROM dual ) t,
    TABLE (xmlsequence(xmltype('<e><e>' || replace(t.options,',','</e><e>')|| '</e></e>').extract('e/e'))) x

) v ON column0 LIKE v.search

Используйте функциональные возможности Oracle Oracle для преобразования строки, разделенной запятыми, в эквивалентное количество строк, заключая каждое предложение в %%, Затем присоедините эти строки к нужной таблице.

Чтобы использовать с CR, создайте строковый параметр с одним значением и добавьте его в код:

...
FROM  ( SELECT '{?search_param}' options FROM dual ) t,
...
Другие вопросы по тегам