2014-09-19 1 views
2

Я использую построитель отчетов 3.0, подключенный к базе данных oracle. Я пытаюсь передать параметр даты в запросе без успеха, я не знаю точного синтаксиса. Я пробовал:Как передать параметр даты из конструктора запросов построителя отчетов в базу данных oracle

SELECT * 
FROM igeneral.GCL_CLAIMS 
WHERE CREATED_BY IN (:CREATED_BY) AND CLAIM_YEAR IN(:UW_YEAR) 
    AND (Trunc(LOSS_DATE,'mm/dd/yyyy') BETWEEN to_char(':From', 'mm/dd/yyyy') 
    AND to_char('To', 'mm/dd/yyyy')) 

я получил эту ошибку: ORA-01036: illegal variable name/number

также я попытался это:

SELECT * 
FROM igeneral.GCL_CLAIMS 
WHERE CREATED_BY IN (:CREATED_BY) AND CLAIM_YEAR IN(:UW_YEAR) 
    AND (LOSS_DATE BETWEEN ':From' AND ':To') 

я получил эту ошибку: ORA-01036: illegal variable name/number

благодаря

+0

': FROM' и ': To' выглядит подозрительно для меня. Я считаю, что вы пытаетесь заставить движок использовать текст ': FROM' в формате mm/dd/yyyy. Я считаю, что вам не нужны тики; и разве вы не хотите to_date вместо to_char? От: FROM и: To, вероятно, уже передаются строки справа и их нужно преобразовать в даты, чтобы правильно использовать их. – xQbert

+0

ваше право я имею в виду to_date, я пытался to_char, так как я нашел сообщение в Интернете, используя to_char вместо to_date, но не работал. From и To - параметры; можете ли вы дать мне правильный синтаксис для использования? –

+1

Необходимо просто удалить переменную tics/paramaters shoudln't, которая будет обернута в тики. тип данных известен, поскольку он должен быть передан как параметр, поэтому вам не нужны тики вокруг них. – xQbert

ответ

0

Решение зависит от data type от и до параметра.

Если ваш параметр имеет тип данных DATE, используйте to_char, чтобы преобразовать дату в литерал требуемого формата, который вы хотите отобразить. Иначе, если параметр имеет тип данных VARCHAR2, используйте to_date, чтобы преобразовать дату и дату для сравнения.

В вашем случае возможно, что столбец LOSS_DATE является DATE, а ваши параметры являются литералами, поэтому используйте TO_DATE для параметров, используя соответствующую маску формата.

LOSS_DATE BETWEEN to_date(':From', 'mm/dd/yyyy') AND to_date('To', 'mm/dd/yyyy')

+0

Я попытался, как вы сказали, набор данных был сохранен без ошибок, однако при запуске отчета возникла ошибка «ORA-01036: незаконное имя/номер переменной» –

+0

Если данные вставляются в базу данных отлично, это означает, что при генерации отчета существует несоответствие в типе данных. –

+0

как я могу отслеживать его, я попытался преобразовать все поля на сегодняшний день с помощью функции To_Date, но не работал –

0

Ошибка, ORA-01036: недопустимое имя переменный/numberbeing, как правило, происходит в Отчете Oracle, когда параметр определен в объекте навигаторе не соответствует переменному связыванию, указанным в запросе.

Включены ли ваши переменные связывания :From и :To в «Пользовательских параметрах» в вашем объектном навигаторе? Я заметил, что ваш цитированный код не имеет двоеточия, предшествующего ему для переменной привязки :To.

Правильный пример

Вот скриншот «Пользовательские параметры» затравки Oracle Доклада .... и, в частности переменная :p_as_of_date связывания. Обратите внимание, что с помощью наглядного инспектора свойств вы идентифицируете тип данных и входную маску. Вы установили параметры, :From и :To, таким образом? В частности, если ваш параметр используется как дата, я бы удостоверился, что Datatype установлен в Date в Property Inspector. enter image description here

Вот фрагмент из: p_as_of_date переменной связывания в «затравку» Oracle Report и здесь идет ссылка в запросе:

where  TRUNC(ps.gl_date) <= :p_as_of_date 

Обратите внимание, что ни один кастинг не требуется. С вашим запросом, я бы этот подход (опять же, не литье):

AND TRUNC(LOSS_DATE,'mm/dd/yyyy') BETWEEN :From AND :To 

Следовательно, я бы просто убедитесь, что переменная связывания цитируется в «User Parameters» соответствуют связываемых переменных в запросе.

+1

Я пробовал это, но после того, как я нажму ОК, чтобы сохранить, всплывающее окно «Определить параметры запроса», перечисляя все мои параметры с столбцами параметров и параметров, после того, как я нажму ОК, появится еще одна ошибка «ORA-01745: недействительный хост/привязка имя переменной ". Также обратите внимание, что в дизайне запроса у меня нет визуального интерфейса таблиц и представлений, похожих на экран навигатора объектов, я могу писать только запросы; есть ли способ показать это, так как это облегчит много работы –