Я нашел синтаксис для написания условного оператора SQL в наборах данных Oracle BI Publisher 10G. Например, я хочу, чтобы данные были либо подробными, либо различающимися в зависимости от определенного мной параметра.
Чтобы проиллюстрировать то, что я хочу:
Будет параметр, например P_UNIQUE
, который представляет собой список вариантов, из которых пользователь может выбирать, список содержит эти значения.
Данные уникальны, значение = 1
Данные не уникальны, значение = 2
Затем, в зависимости от выбора пользователя, выполняемая команда SQL в наборе данных во время выполнения будет либо:
SELECT
DISTINCT
FIRSTNAME || ' ' || LASTNAME AS EMP_NAME,
DECODE(TRANSACTIONTYPE, 19, 'SUCCESS', 'FAILURE') AS ACCESS_ATTEMPT,
READERDESCRIPTION AS DOOR,
etc…
Or
SELECT
FIRSTNAME || ' ' || LASTNAME AS EMP_NAME,
DECODE(TRANSACTIONTYPE, 19, 'SUCCESS', 'FAILURE') AS ACCESS_ATTEMPT,
READERDESCRIPTION AS DOOR,
etc…
(обратите внимание на ключевое слово Distinct в предыдущем фрагменте кода)
Конечно, это невозможно в SQL, но я наткнулся на эту удивительную функцию в BI 10G, чтобы добиться этого, см. Код ниже:
SELECT
{$ if ${P_UNIQUE}='1' $}
DISTINCT
{$endif$}
/*no need for else, the distinct keyword will simply not be presented if the p_unique parameter value is not equal to 1*/
FIRSTNAME || ' ' || LASTNAME AS EMP_NAME,
DECODE(TRANSACTIONTYPE, 19, 'SUCCESS', 'FAILURE') AS ACCESS_ATTEMPT,
READERDESCRIPTION AS DOOR,
etc…
Это отлично работает в 10G
Теперь проблема, с которой я столкнулся, заключается в том, что мы перешли на 11G, все отчеты из 10G теперь работают нормально и, как ожидалось в 11G, но вы не можете написать этот код из царапина, он не распознается во время разработки в 11G, и вы не сможете сохранить свой запрос, если он содержит ошибку, хотя он работает в перенесенных отчетах.
Кроме того, я не могу редактировать и сохранять свои правки в этих перенесенных отчетах по той же причине.
Итак, как преодолеть это ограничение времени разработки и сохранить запрос независимо от того, что в нем написано?
Как я уже говорил, он работает в 11G, но я не могу редактировать существующие или создавать новые с помощью этих специальных команд.
Так что любые предложения будут оценены.