0

我有一个错误 ora-01722:无效号码。尝试了to_char,强制转换函数,没有任何帮助。我有以下 SQL,其中 PERSON_DOCS 和 PERSON_DOCS_NEW 是视图,字段 DOCTYPENAME 是使用视图内的子选择计算的,类型为 varchar2(70),并且对于两个视图中的所有行都为空。

    select count(1) from 
     (select DOCTYPENAME
        from PERSON_DOCS 
      minus 
      select DOCTYPENAME
        from PERSON_DOCS_NEW)

目前的观点是相同的:

CREATE OR REPLACE VIEW PERSON_DOCS AS
  select

...,

(select lr.ll_remark
   from table1 ln,
        table2 lv,
        table3 lr
  where ln.short_name = 'DOC.TYPE'
    and ln.table_no = lv.table_no
    and lv.table_no = lr.table_no
    and lv.vetting_table = c.doc_type) as DOCTYPENAME,
 
...

from table0 c

尝试了 to_char,在视图内的子选择上强制转换函数,没有帮助。

Table3 DDL语句,取值来自:

CREATE TABLE table3
   (TABLE_NO VARCHAR2(35 BYTE), 
    LL_REMARK VARCHAR2(70 BYTE)
   ) ;

CREATE TABLE table1
   (TABLE_NO VARCHAR2(35 BYTE), 
    SHORT_NAME VARCHAR2(15 BYTE)
   );

CREATE TABLE table2
   (TABLE_NO VARCHAR2(35 BYTE), 
    VETTING_TABLE VARCHAR2(35 BYTE), 
    APPLICATION VARCHAR2(40 BYTE)
   );

CREATE TABLE table0
   (CUSTOMER_CODE VARCHAR2(10 BYTE),
    DOC_TYPE NUMBER
   );
4

1 回答 1

0

在您的查询中某处存在隐式类型转换。只需使用explain plan您的查询并在谓词部分或在projection您将看到类似to_number(..)or的内容internal_function()

于 2021-05-06T14:03:35.163 回答