Мой запрос, который работает непосредственно к таблице, не работает при записи в представление - PullRequest
0 голосов
/ 01 мая 2020

Oracle 12 c, ColdFusion 2018

У меня две идентичные таблицы в двух разных базах данных. Существует представление, которое использует UNION для объединения данных в один набор данных, используя ссылку на базу данных. Представление работает и не содержит ошибок.

Когда я запрашиваю представление из ColdFusion, я получаю сообщение об ошибке "Недействительный месяц".

Когда я запрашиваю только одну из таблиц (а не вид) я не получаю такую ​​же ошибку.

Есть идеи, почему это произойдет?

Table1 in database1
EmployeeID (number)
ShiftCode (varchar2)
ShiftTime (date)

Table2 in database2
EmployeeID (number)
ShiftCode (varchar2)
ShiftTime (date)


ViewBothTables  - Table1 and table2 created in database1
SELECT EmployeeID, ShiftCode, ShiftTime
FROM Table1
UNION
SELECT EmployeeID, ShiftCode, ShiftTime
FROM USER.Table2@databaseConnection2


Query1 in ColdFusion - This works - returns 48 rows
SELECT employeeID, ShiftCode, ShiftTime
FROM USER.table1@databaseConnection1
Where ShiftTime <= #thisSchedWeekEnd#
            AND
      ShiftTime >= #thisSchedWeekStart# 

Query2 in ColdFusion - This works - returns 10 rows
SELECT employeeID, ShiftCode, ShiftTime
FROM USER.table2@databaseConnection2
Where ShiftTime <= #thisSchedWeekEnd#
            AND
      ShiftTime >= #thisSchedWeekStart# 

Query 3 in ColdFusion - this gives me the error
SELECT employeeID, ShiftCode, ShiftTime
FROM USER.viewBothTables@databaseConnection1
Where ShiftTime <= #thisSchedWeekEnd#
            AND
      ShiftTime >= #thisSchedWeekStart# 


[Macromedia][Oracle JDBC Driver][Oracle]ORA-01843: not a valid month ORA-02063: preceding line from databaseConnection1


Структуры идентичны, Table1 и Table2 являются копиями одних и тех же таблиц (с разными людьми) в двух отдельных базах данных. Представление работает и доступно для просмотра (ха-ха) Я запрашиваю из третьей базы данных. Переменная даты ColdFusion идентична во всех трех примерах, потому что это одна и та же переменная все три раза. Первые два запроса работают. Третий говорит недействительный месяц.

У меня есть все три запроса на странице, точно так же, как и выше. Первые два возвращают данные, третьи ошибки выходят.

Да, установка глупа. Я ничего не могу с этим поделать, они являются унаследованными системами, которые я не могу изменить, и им просто приходится иметь дело

1 Ответ

0 голосов
/ 04 мая 2020

Я думаю, что date format отличается между databaseConnection1 и databaseConnection2.

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

Можете ли вы проверить приведенную ниже таблицу в обеих базах для NLS_DATE_FORMAT.

    select * from nls_session_parameters;

Обновление 1 : - Поскольку формат даты одинаков для двух баз данных, попробуйте явное преобразование формата даты для параметра, как показано ниже

  SELECT employeeID, ShiftCode, ShiftTime
  FROM USER.viewBothTables@databaseConnection1
   Where ShiftTime <= #dateFormat(thisSchedWeekEnd, "mm/dd/yyyy")#
        AND
   ShiftTime >= #dateFormat(thisSchedWeekStart, "mm/dd/yyyy")#
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...