Plsql validate_转换不在包中编译,而是作为独立过程编译

Plsql validate_转换不在包中编译,而是作为独立过程编译,plsql,Plsql,当我尝试在plsql中使用validate_转换时,我得到了一个编译错误 Error: PLS-00801: Interner Fehler [*** ASSERT at file pdz2.c, line 5361; The_Exp is null.; TEST__DBNAME__B__2920081[10, 3]] Line: 10 Text: END; 有趣的是,只有在包中编译时才会发生此错误。MWE是: CREATE OR REPLACE PACKAGE test IS PROCE

当我尝试在plsql中使用validate_转换时,我得到了一个编译错误

Error: PLS-00801: Interner Fehler [*** ASSERT at file pdz2.c, line 5361; The_Exp is null.; TEST__DBNAME__B__2920081[10, 3]]
Line: 10
Text: END;
有趣的是,只有在包中编译时才会发生此错误。MWE是:

CREATE OR REPLACE PACKAGE test IS
  PROCEDURE my_VALIDATE_CONVERSION(asNbr VARCHAR2);
END test;
/
CREATE OR REPLACE PACKAGE BODY test IS
  PROCEDURE my_VALIDATE_CONVERSION(asNbr VARCHAR2) IS
  BEGIN
    CASE VALIDATE_CONVERSION(asNbr AS NUMBER, '999999D99', ' NLS_NUMERIC_CHARACTERS = '',.''')
      WHEN 1 THEN
        DBMS_OUTPUT.PUT_LINE('He');
      ELSE
        DBMS_OUTPUT.PUT_LINE('Cu');
    END CASE;
  END;
BEGIN
  NULL;
END test;
/
如果编译为独立过程
my\u VALIDATE\u CONVERSION
,它就可以正常工作

CREATE OR REPLACE PROCEDURE my_VALIDATE_CONVERSION(asNbr VARCHAR2) IS
BEGIN
  CASE VALIDATE_CONVERSION(asNbr AS NUMBER, '999999D99', ' NLS_NUMERIC_CHARACTERS = '',.''')
    WHEN 1 THEN
      DBMS_OUTPUT.PUT_LINE('He');
    ELSE
      DBMS_OUTPUT.PUT_LINE('Cu');
  END CASE;
END;
这是怎么回事

即时通讯使用:

  • PL/SQL开发人员版本13.0.6.1911(64位)
  • Oracle数据库18c标准版2发行版18.0.0.0.0

    • 似乎是数据库中的一个bug。我会尝试升级到Oracle 19c或将最新的修补程序集应用到您的数据库。我能够在我的数据库(版本19.6.0.0.0)中编译您的包,没有任何错误