【问题标题】:LOB locators from remote tables来自远程表的 LOB 定位器
【发布时间】:2017-12-15 11:15:07
【问题描述】:

运行以下查询时遇到 oracle 异常 ORA-22992: 无法使用从远程表中选择的 LOB 定位器

        SELECT 
            OLU.CNIC,
            OLU.LR_USER_NAME NAME,
            OLU.FATHERS_NAME,
            OLU.ADDRESS,
            BATCH_VERIF.CREATED_DATE BATCH_DATE,
            TO_DATE(OLU.ATTRIBUTE9, 'mm/dd/yyyy hh:mi:ss AM')  TRANSLATION_DATE
    FROM ORION.ORN_LR_USER@LIV OLU
    INNER JOIN
    (
        SELECT MAX(BATCH_ID) BATCH_ID, CNIC
        FROM ORION.ORN_LR_BATCH_CNIC@LIV
        WHERE IMPORT_DATE IS NOT NULL AND IMPORTED = 'T'
        GROUP BY CNIC
    ) BATCH_CNIC
            ON (BATCH_CNIC.CNIC = OLU.CNIC
                    AND NVL (OLU.IS_BATCH_VERIFIED, 'F') = 'T' 
                    AND NVL (OLU.ATTRIBUTE10, 'F') = 'T'
                    AND OLU.ATTRIBUTE9 IS NOT NULL) 
        INNER JOIN ORION.ORN_FILE_BATCH_VERIF@LIV BATCH_VERIF
            ON BATCH_VERIF.BATCH_ID = BATCH_CNIC.BATCH_ID;

但是在评论 TRANSLATION_DATE 之后它工作正常,lob 类型的列也不是......可能是什么原因?

        SELECT 
            OLU.CNIC,
            OLU.LR_USER_NAME NAME,
            OLU.FATHERS_NAME,
            OLU.ADDRESS,
            BATCH_VERIF.CREATED_DATE BATCH_DATE
            --TO_DATE(OLU.ATTRIBUTE9, 'mm/dd/yyyy hh:mi:ss AM')  TRANSLATION_DATE
    FROM ORION.ORN_LR_USER@LIV OLU
    INNER JOIN
    (
        SELECT MAX(BATCH_ID) BATCH_ID, CNIC
        FROM ORION.ORN_LR_BATCH_CNIC@LIV
        WHERE IMPORT_DATE IS NOT NULL AND IMPORTED = 'T'
        GROUP BY CNIC
    ) BATCH_CNIC
            ON (BATCH_CNIC.CNIC = OLU.CNIC
                    AND NVL (OLU.IS_BATCH_VERIFIED, 'F') = 'T' 
                    AND NVL (OLU.ATTRIBUTE10, 'F') = 'T'
                    AND OLU.ATTRIBUTE9 IS NOT NULL) 
        INNER JOIN ORION.ORN_FILE_BATCH_VERIF@LIV BATCH_VERIF
            ON BATCH_VERIF.BATCH_ID = BATCH_CNIC.BATCH_ID;

【问题讨论】:

  • ATTRIBUTE9 是 varchar2 列
  • 如果我理解正确,您是说 ATTRIBUTE9 不是 CLOB 列。你确定吗?如果是,在引用的表中是否有任何 CLOB 类型的列?
  • 是的,ATTRIBUTE9 不是 CLOB 列。引用表中有 CLOB 列,但在任何查询中都没有选择它们。如果您比较两个脚本,您会注意到我想分享的差异。
  • ATTRIBUTE9 的大小是多少,数据库字符集是什么?我认为一个大字符串(例如varchar2(4000))可能会导致这种情况,如果字符集不同,并且在链接上为每个字符分配多个字节;它实际上变成了一个隐含的 CLOB。虽然我看到很久了,我会尝试挖掘一些东西。
  • ATTRIBUTE9 512 字节的大小,此列的大小无关紧要,因为我之前选择过此列,发现没有问题.. 当我将此列转换为日期类型时出现问题。

标签: oracle lob


【解决方案1】:

“当我将此列转换为日期类型时出现问题”

嗯,听起来可能是 Oracle 错误。但也许你可以用这个技巧来解决它:

TO_DATE(substr(OLU.ATTRIBUTE9, 1, 22), 'mm/dd/yyyy hh:mi:ss AM') TRANSLATION_DATE

【讨论】:

  • 错误在哪一端?甲骨文?
猜你喜欢
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 2010-12-13
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
相关资源
最近更新 更多