#oracle-apex #plsqldeveloper #oracle-apex-5 #oracle-apex-5.1
#oracle-apex #plsqldeveloper #oracle-apex-5 #oracle-apex-5.1
Вопрос:
Вот мой код Plsql, используемый внутри кода процесса, но я получаю ошибку при преобразовании символа в число, из-за столбца l_receipt_date мне нужно вставить дату в формате ‘ГГГГ-ММ-ДД’, как указано ниже, поэтому я использовал приведенный ниже код внутри процесса, l_receipt_date:=to_char(: P4_RECEIPT_DATE, ‘ГГГГ-ММ-ДД’); , я получаю ошибку из-за этой строки выше.Вот мой код 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;
Ответ №1:
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');
т.е.
- Возьмите строку в
P4_RECEIPT_DATE
и преобразуйте ее в ДАТУ, используя формат ДД-ПН-ГГГГ. - Возьмите эту дату и снова преобразуйте ее в строку в формате ГГГГ-ММ-ДД.
Комментарии:
1. Спасибо @Tony, ее устранение я изменил как l_receipt_date:=to_char(to_date(: P4_RECEIPT_DATE, ‘ДД-ММ-ГГГГ’), ‘ГГГГ-ММ-ДД’);