Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
SETSERVEROUTPUTON:
DECLARE
CLOBdata
lv_clobCLOBDEFAULT'ThisisaexampletestingbySHAREORACLEAPPS';
Databasedirectoryforaphysicallocation
lv_utl_file_directoryVARCHAR2(100)DEFAULT'TEST_DB_DIRECTORY';
OutputFilename
lv_file_nameVARCHAR2(100)DEFAULT'TESTFILE.txt';
BEGIN
DBMS_XSLPROCESSOR.clob2file(lv_clob,
lv_utl_file_directory,
lv_file_name
);
EXCEPTION
WHENOTHERS
THEN
DBMS_OUTPUT.put_line('Error:'||SQLERRM);
END;
How to write a XML file in Oracle with specific character set using
DBMS_XMLDOM.WRITETOFILE
Export an AP Invoice data as an XML file in a specified CHARACTER SET.
Standard ORACLE API. DBMS_XMLDOM.WRITETOFILE.
Specification:
DBMS_XMLDOM.WRITETOFILE
(docINDOMDOCUMENT,
fileNameINVARCHAR2,
charsetINVARCHAR2
);
Sample Script:
SETSERVEROUTPUTON;
DECLARE
lv_docDBMS_XMLDOM.domdocument;
lv_xdataXMLTYPE;
lv_charactersetVARCHAR2(50)DEFAULT'ISO88591';
lv_filenameVARCHAR2(50)DEFAULT'SHAREORACLEAPPS.xml';
lv_directoryVARCHAR2(50)DEFAULT'TEST_DIRECTORY';
dbdirectory
BEGIN
SELECTXMLELEMENT("AP_INVOICE_DATA",
XMLELEMENT("Invoice_number",invoice_num),
XMLELEMENT("Invoice_date",invoice_date),
XMLELEMENT("Invoice_amount",invoice_amount)
)
INTOlv_xdata
FROMap_invoices_allaia
WHEREaia.invoice_numLIKE'%TEST_1';
preparethedocument
lv_doc:=DBMS_XMLDOM.newdomdocument(lv_xdata);
writethexmlfiletoadbdirectoryinaspecifiedchracterset
DBMS_XMLDOM.writetofile(lv_doc,
lv_directory||'/'||lv_filename,
lv_characterset
);
EXCEPTION
WHENOTHERS
THEN
DBMS_OUTPUT.put_line('OthersException:'||SQLERRM);
END;
Sample XML:
1.
2.
3.
4.
5.
VARCHAR2 (2000)
:= NULL;
l_email_text
VARCHAR2 (32000)
DEFAULT NULL;
p_host_id_address
VARCHAR2 (100);
p_remittance_email
VARCHAR2 (200)
:= 'xyz@shareoracleapps.com';
l_new_line
VARCHAR2 (2)
:= UTL_TCP.crlf;
l_connection
UTL_SMTP.connection;
BEGIN
BEGIN
SELECT UTL_INADDR.get_host_address ('mailhost.shareoracleapps.com')
INTO p_host_id_address
FROM DUAL;
END;
l_connection := UTL_SMTP.open_connection (p_host_id_address, 25);
UTL_SMTP.helo (l_connection, p_host_id_address);
UTL_SMTP.mail (l_connection, 'Teamsearch@shareoracleapps.com');
UTL_SMTP.rcpt (l_connection, p_remittance_email);
l_email_text :=
l_email_text
|| 'From: '
|| 'teamsearch@shareoracleapps.com'
|| l_new_line
|| 'Subject: Test Email'
|| l_new_line
|| 'To: '
|| p_remittance_email
|| l_new_line
|| 'Content-Type: text/html'
|| l_new_line
|| l_new_line
|| '<HTML><BODY><P><PRE>'
|| l_new_line
);
END send_email_detail;
= '
fl,
ecx_attachment_maps eam
WHERE eam.fid = fl.file_id
AND eam.msgid = p_msg_id;
v_start
NUMBER DEFAULT 1;
v_bytelen
v_len_copy
NUMBER;
v_raw_var
RAW(32000);
v_output
utl_file.file_type;
v_inv_file_name VARCHAR2(100);
v_position
NUMBER;
v_first_rec
BEGIN
v_position := 10;
FOR rec_inv IN cur_new_attmt
LOOP
BEGIN
v_inv_file_name := NULL;
v_inv_file_name := rec_inv.file_name;
v_position := 20;
-- define output directory AND OPEN THE file IN WRITE BYTE MODE
v_output := utl_file.fopen(p_inv_image_dir,
v_inv_file_name,
'wb',
32760);
v_position := 30;
-- maximum size OF buffer parameter IS 32767 BEFORE
-- which you have TO flush
your buffer
:= 1;
v_bytelen
:= 32000;
v_len_copy := rec_inv.file_length;
WHILE v_start < rec_inv.file_length
AND v_bytelen > 0
LOOP
v_position := 50;
dbms_lob.READ(rec_inv.file_data,
v_bytelen,
v_start,
v_raw_var);
v_position := 60;
utl_file.put_raw(v_output,
v_raw_var);
v_position := 70;
utl_file.fflush(v_output);
v_start
:= v_start + v_bytelen;