Передайте параметр команды Crystal Report в функцию Oracle - PullRequest
2 голосов
/ 29 июля 2011

У меня есть функция Oracle 10g с именем F_SMART_DATE (), которая возвращает скалярную дату.Он принимает один параметр VARCHAR2, который является либо строкой даты (например, «2011-01-01», «3/29/1966»), либо «умной» датой (например, «m-1» (один месяц назад), 'yb-0 '(начало текущего года)).

Когда я выполняю функцию в SQL Developer, она работает должным образом:

--return 28-JUL-11
SELECT F_SMART_DATE('M-1') SMART_DATE FROM DUAL;

Если я создаю отчет Crystal сОбъект Command, использующий тот же синтаксис, работает должным образом.

Если я создаю параметр String в объекте Command (с именем 'AS_OF') и пытаюсь передать его функции, проблема начинается.

Текст объекта команды:

--reference Oracle function
SELECT F_SMART_DATE({?AS_OF}) SMART_DATE FROM DUAL;

Если я передаю M-1 (БЕЗ одинарных кавычек), я получаю сообщение об ошибке: «Не удалось получить данные из базы данных.Подробности: ORA-00904: «M»: недопустимый идентификатор [Код поставщика базы данных: 904] '.

Если я передаю «M-1» (С одинарными кавычками), вызов работает, как и ожидалось.

К сожалению, эти синтаксические варианты также не работают:

SELECT F_SMART_DATE(''' || {?AS_OF} || ''') SMART_DATE FROM DUAL;

SELECT F_SMART_DATE(''({?AS_OF})'') SMART_DATE FROM DUAL;

В идеале, я мог бы удалить кавычки из диалогового окна параметров.

1 Ответ

3 голосов
/ 29 июля 2011

Работает ли это:

SELECT F_SMART_DATE('{?AS_OF}') SMART_DATE FROM DUAL;

Прошло много времени с тех пор, как я использовал Crystal Reports, но, насколько я помню, параметры работают скорее как макросы, чем как переменные связывания.

...