ORA-22992 / ORA-06502 + ORA-06512错误

时间:2019-11-14 16:57:19

标签: sql oracle

我在大一部分中使用这部分代码:

SELECT DISTINCT 
    P.SKU, SUBSTR(X.ATTRIBUTENAME, 14, 3) ATTRIBUTECODE, X.ATTRIBUTEVALUE
FROM 
    PRODUCT@ISPSTAG2 P,
    XMLTABLE('/attrs/attr'
    PASSING XMLTYPE(REGEXP_REPLACE(P.ATTRIBUTES_DE_AT, '<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) = 'AT'
AND SKU NOT LIKE 'OFF_%' AND SKU NOT LIKE 'PDT%'
AND ATTRIBUTES_DE_AT IS NOT NULL;

它会引发ORA-22992错误。

我已经进行了一些研究,并且提示可以使用双重功能

SELECT DISTINCT P.SKU, SUBSTR(X.ATTRIBUTENAME, 14, 3) ATTRIBUTECODE, X.ATTRIBUTEVALUE
FROM PRODUCT@ISPSTAG2 P,
XMLTABLE('/attrs/attr'
    PASSING XMLTYPE(REGEXP_REPLACE(P.ATTRIBUTES_DE_AT, '<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) = 'AT'
AND SKU NOT LIKE 'OFF_%' AND SKU NOT LIKE 'PDT%'
AND (SELECT ATTRIBUTES_DE_AT FROM DUAL) IS NOT NULL;

但是现在我收到ORA-06502 / ORA-06512错误:

  

ORA-06502:PL / SQL:Val urer ur ererur numeréurvaler
  ORA-06512:à“ SYS.XMLTYPE”,ligne 272
  ORA-06512:àligne 1
  06502. 00000-“ PL / SQL:数值或数值错误%s”
  *原因:发生算术,数字,字符串,转换或约束错误。例如,如果尝试将值NULL分配给声明为NOT NULL的变量,或者试图将大于99的整数分配给声明的NUMBER(2),则会发生此错误。
  *操作:更改数据,如何操作或声明数据,以使值不违反约束。

但是,我在ISPSTAG2上执行了第一个,并且可以正常工作,但是在ISPSTAG2上的第二个返回了相同的ORA-06502 / ORA-06512错误,因此问题出在双重子查询上。

我还尝试使用DBMS_LOB.SUBSTR在ISPSTAG2上创建一个具有4000个字符但有相同错误的视图。

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

如果忘记使用XMLTYPE中的(SELECT ATTRIBUTES_DE_AT FROM DUAL)子查询...

SELECT DISTINCT P.SKU, SUBSTR(X.ATTRIBUTENAME, 14, 3) ATTRIBUTECODE, X.ATTRIBUTEVALUE
FROM PRODUCT@ISPSTAG2 P,
XMLTABLE('/attrs/attr'
    PASSING XMLTYPE(REGEXP_REPLACE(**(SELECT ATTRIBUTES_DE_AT FROM DUAL)**, '<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) = 'AT'
AND SKU NOT LIKE 'OFF_%' AND SKU NOT LIKE 'PDT%'
AND (SELECT ATTRIBUTES_DE_AT FROM DUAL) IS NOT NULL;

我不明白的是,当不在IS NOT NULL过滤器中使用子查询时,出现ORA-22992错误(使用远距离LOB),所以为什么我有一个不同的错误而不使用双重子查询,这是相同的远程LOB吗?

随时为您提供时间/帮助:)

相关问题