У меня есть автоматически сгенерированный SQL, аналогичный приведенному ниже, я попытался немного упростить его, чтобы продемонстрировать суть проблемы, с которой я сталкиваюсь.Customer.Id - это VARCHAR2 (40 байт), а Order.CustomerId - это число (10,0)
SELECT *
FROM
(
SELECT query.*, ROWNUM ROWNUM__
FROM
(
SELECT cst.name, cst.lastname, ord.product, ord.price
FROM Customer cst
LEFT OUTER JOIN Order ord ON ord.Manufacturer = 'Samsung'
AND TO_CHAR(cst.Id) = TO_CHAR(ord.CUSTOMER_ID)
) query
WHERE ROWNUM <= 1000
)
WHERE ROWNUM__ > 0
. Когда я запускаю самый внутренний запрос, я получаю ожидаемые результаты, нопроблема у меня заключается в том, что при запуске все вместе, LEFT OUTER JOIN возвращает нулевые столбцы.Если я уберу нижеследующее «предложение условия», то это сработает, но, к сожалению, функциональность подкачки обрабатывается библиотекой, созданной моим рабочим местом, и ее использование является обязательным, поэтому изменение этих критериев ROWNUM для меня не вариант.
WHERE ROWNUM <= 1000
Если я удаляю это, это работает, но мне нужно иметь возможность присоединиться по идентификатору таблицы.
TO_CHAR(cst.Id) = TO_CHAR(ord.CUSTOMER_ID)
Если это поможет, план выполнения: