У меня есть функция 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;
В идеале, я мог бы удалить кавычки из диалогового окна параметров.