Ошибки ORA-06502 / ORA-06512 с использованием удаленного Clob и двойного - PullRequest
0 голосов
/ 16 января 2020

Вкл. Oracle База данных 12 c Standard Edition, выпуск 12.1.0.2.0 - 64-битное производство. Я пытаюсь получить имена и значения атрибутов и сравнить их.

Вот запрос, который я сделал ( будь осторожен: D):

SELECT ENV1.SKU,
ENV1.ATTRIBUTECODE ATTRIBUTECODE,
ENV1.ATTRIBUTEVALUE ATTRIBUTEVALUE_ENV1,
ENV2.ATTRIBUTEVALUE ATTRIBUTEVALUE_ENV2,
CASE
    WHEN ENV1.ATTRIBUTEVALUE IS NULL THEN 'ATTRIBUT MANQUANT SUR ENV1'
    WHEN ENV2.ATTRIBUTEVALUE IS NULL THEN 'ATTRIBUT MANQUANT SUR ENV2'
    WHEN ENV1.ATTRIBUTEVALUE != ENV2.ATTRIBUTEVALUE THEN 'MODIFICATION'
END DIFF
FROM (SELECT DISTINCT P.SKU, SUBSTR(X.ATTRIBUTENAME, 14, 3) ATTRIBUTECODE, X.ATTRIBUTEVALUE
                FROM PRODUCT P,
                XMLTABLE('/attrs/attr'
                    PASSING XMLTYPE(REGEXP_REPLACE(P.ATTRIBUTES_FR_FR, '<attr name="longDescription">.*?<\/attr>'))
                    COLUMNS ATTRIBUTENAME VARCHAR2(50) PATH '@name',
                            ATTRIBUTEVALUE VARCHAR2(4000) PATH '/string'
                ) X
                WHERE X.ATTRIBUTENAME LIKE 'Z_CA%'
                AND P.UUID IN (SELECT UUID FROM PRODUCT
                                WHERE DN(DOMAINID) = 'FR'
                                AND SKU NOT LIKE 'OFF_%' AND SKU NOT LIKE 'PDT%'
                                AND ATTRIBUTES_FR_FR IS NOT NULL)) ENV1
FULL JOIN (SELECT DISTINCT P.SKU, SUBSTR(X.ATTRIBUTENAME, 14, 3) ATTRIBUTECODE, X.ATTRIBUTEVALUE
            FROM PRODUCT@ENV2 P,
            XMLTABLE('/attrs/attr'
                PASSING XMLTYPE(REGEXP_REPLACE(P.ATTRIBUTES_FR_FR, '<attr name="longDescription">.*?<\/attr>'))
                COLUMNS ATTRIBUTENAME VARCHAR2(50) PATH '@name',
                        ATTRIBUTEVALUE VARCHAR2(4000) PATH '/string'
            ) X
            WHERE X.ATTRIBUTENAME LIKE 'Z_CA%'
            AND DN(DOMAINID) = 'FR'
            AND SKU NOT LIKE 'OFF_%' AND SKU NOT LIKE 'PDT%'
            AND (SELECT ATTRIBUTES_FR_FR FROM DUAL) IS NOT NULL) ENV2
ON ENV1.SKU = ENV2.SKU
AND ENV1.ATTRIBUTECODE = ENV2.ATTRIBUTECODE
WHERE (ENV1.ATTRIBUTEVALUE IS NULL OR ENV2.ATTRIBUTEVALUE IS NULL OR ENV1.ATTRIBUTEVALUE != ENV2.ATTRIBUTEVALUE)
ORDER BY ENV1.SKU ASC;

Но есть ошибка:

ORA-06502: PL/SQL: numeric or value error string
ORA-06512: at "SYS.XMLTYPE", line 272
ORA-06512: at line 1

Когда я пробую часть ENV1 на EV1, она работает, когда пробую деталь ENV2 без двойного включения ENV2 тоже работает, но когда я пробую часть ENV2 на ENV1, используя @ ENV2 и двойной, у меня та же ошибка, и мне нужно использовать двойной, потому что, если я не использую его, есть эта ошибка:

ORA-22992: cannot use LOB locators selected from remote tables

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

Может ли кто-нибудь помочь падавану?

Спасибо.

1 Ответ

0 голосов
/ 16 января 2020

Попробуйте создать представление на удаленном узле, который выполняет операцию SQL на LOB удаленно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...