以下代碼顯示沒有語法錯誤,但在報告中出現錯誤,即:
ORA-01722: 無效號碼
select line_number, col002 , case when exists (select null from cdr_personal_info c where c.phone_no=col002 ) then 'Yes' else null end as cdr
from apex_application_temp_files f,
table( apex_data_parser.parse(
p_content => f.blob_content,
p_add_headers_row => 'Y',
p_xlsx_sheet_name => :P31_XLSX_WORKSHEET,
p_max_rows => 500,
p_store_profile_to_collection => 'FILE_PARSER_COLLECTION',
p_file_name => f.filename ) ) p
where f.name = :P31_FILE
uj5u.com熱心網友回復:
如果您使用的是 Oracle 12,則可以嘗試使用以下DEFAULT NULL ON CONVERSION ERROR選項將值顯式轉換為數字:
select line_number,
col002,
case
when exists (select null
from cdr_personal_info c
where TO_NUMBER(c.phone_no DEFAULT NULL ON CONVERSION ERROR)
= TO_NUMBER(col002 DEFAULT NULL ON CONVERSION ERROR)
)
then 'Yes'
else null
end as cdr
from apex_application_temp_files f,
table( apex_data_parser.parse(
p_content => f.blob_content,
p_add_headers_row => 'Y',
p_xlsx_sheet_name => :P31_XLSX_WORKSHEET,
p_max_rows => 500,
p_store_profile_to_collection => 'FILE_PARSER_COLLECTION',
p_file_name => f.filename ) ) p
where f.name = :P31_FILE
如果這可行,那么您知道它實際上c_phone_no不是col002一個數字,但可能是一個字串,并且至少有一行字串值無法決議為數字。
然后,您可以使用以下方法找到它:
select line_number,
col002
from apex_application_temp_files f,
table( apex_data_parser.parse(
p_content => f.blob_content,
p_add_headers_row => 'Y',
p_xlsx_sheet_name => :P31_XLSX_WORKSHEET,
p_max_rows => 500,
p_store_profile_to_collection => 'FILE_PARSER_COLLECTION',
p_file_name => f.filename ) ) p
where f.name = :P31_FILE
and TO_NUMBER(col002 DEFAULT NULL ON CONVERSION ERROR) IS NULL;
或者:
select *
from cdr_personal_info c
where TO_NUMBER(c.phone_no DEFAULT NULL ON CONVERSION ERROR) IS NULL;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/484742.html
下一篇:兩次解鎖條件變數互斥鎖?
