处理代码中的错误:ORA-06502:PL / SQL:数字或值错误:字符到数字的转换错误

问题描述

这是我在流程代码中使用的Plsql代码,但是由于 l_receipt_date列,我收到了从char到数字转换的错误消息 我需要按如下所述将日期插入为'YYYY-MM-DD'格式,因此我在进程内部使用了以下代码,l_receipt_date:= to_char(:P4_RECEIPT_DATE,'YYYY-MM-DD'); ,由于上述原因,我遇到了错误。这是我在流程代码中使用的Plsql代码,但是由于 l_receipt_date列

DECLARE
    l_clob            CLOB;
    l_emp_no          NUMBER;
    l_status          VARCHAR2(100);
    l_employee_name   VARCHAR2(100);
    l_id              NUMBER;
    l_employee_salary NUMBER;
    l_employee_age    NUMBER;
    l_request_url     VARCHAR2(200);
    l_body_clob    clob;
    x_err varchar2(2000);
    l_receipt_date  varchar2(1000);
begin

l_request_url := 'https://fa-eoxd-test-saasfaprod1.fa.ocs.oraclecloud.com/fscmRestApi/resources/latest/standardReceipts/';
apex_web_service.g_request_headers(1).name := 'Content-Type';
apex_web_service.g_request_headers(1).value := 'application/json';


l_receipt_date:=to_char(:P4_RECEIPT_DATE,'YYYY-MM-DD');


l_body_clob:='{
"ReceiptNumber":"'||:P4_RECEIPT_NUMBER||'","BusinessUnit":"'||:P4_OPERATING_UNIT_NAME||'","ReceiptMethod":"'||:P4_RECEIPT_METHOD||'","ReceiptDate":"'||l_receipt_date||'"
}';
    
 l_clob :=                                           
APEX_WEB_SERVICE.MAKE_REST_REQUEST(
    p_url  => l_request_url,p_http_method  => 'POST',p_username     => 'fin.user',p_password    => 'Fusion@123',p_body => l_body_clob) ;  

htp.p(l_clob);
exception when others then 
x_err:=sqlerrm;
htp.p(x_err);
END; 

解决方法

P4_RECEIPT_DATE是一个页面项目,所有页面项目都是字符串。因此,在将其TO_CHAR转换为其他格式的字符串之前,首先需要将其TO_DATE转换为日期。假设当前格式为DD-MON-YYYY。然后,您需要执行以下操作:

l_receipt_date:=to_char(to_date(:P4_RECEIPT_DATE,'DD-MON-YYYY'),'YYYY-MM-DD');

  1. 使用P4_RECEIPT_DATE中的字符串,并使用DD-MON-YYYY格式将其转换为DATE。
  2. 获取该日期,然后将其再次转换为YYYY-MM-DD格式的字符串。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...