Sei sulla pagina 1di 10

DBMS_XSLPROCESSOR.

CLOB2FILE Example Script to Write a CLOB data to file


API Specification:
DBMS_XSLPROCESSOR.CLOB2FILE(
clINCLOB,
flocationINVARCHAR2,
fnameINVARCHAR2,
CSIDINNUMBER:=0);
Script:

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:

JAVA Stored Procedure in Oracle PLSQL Example

1.
2.
3.
4.
5.

In this post, I tried the below,


Create a simple class via PLSQL
Verify the same in DB_OBJECTS
Create a simple procedure to Invoke the member function of the class
created above
Test the script
Drop the Java class created
Create a simple class via PLSQL
CREATEORREPLACEANDCOMPILEJAVASOURCENAMED"HelloWorldApp"AS
classhelloworldapp{
publicstaticvoidsayhello(){
system.out.println("helloworld!!!thisiswww.shareoracleapps.com");
}
};

Verify the same in DB_OBJECTS

Create a simple procedure to Invoke the member function of the


class created above
CREATEORREPLACEPROCEDUREtest_hello_world
AS
LANGUAGEJAVA
NAME'HelloWorldApp.sayHello()';

Test the script


SETSERVEROUTPUTON;
CALLDBMS_JAVA.set_output(2000);
CALLtest_hello_world();

Drop the Java class created

Script to send an E-Mail from Oracle PL/SQL using the UTL_SMTP


SET SERVEROUTPUT ON;
DECLARE
l_err_msg

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

|| 'This is Blog contains the details about Oracle apps Technical


and Functional'
|| '</PRE></P></BODY></HTML>';
fnd_file.put_line (fnd_file.LOG, 'Calling UTL_SMTP.DATA');
UTL_SMTP.DATA (l_connection, l_email_text);
DBMS_OUTPUT.put_line ('Calling UTL_SMTP.quit');
UTL_SMTP.quit (l_connection);
DBMS_OUTPUT.put_line ('Email Sent Successfull.');
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (

'Unexpected Error Occured


|| l_err_msg
|| SUBSTR (SQLERRM, 1, 200)

);
END send_email_detail;

= '

Download an AP Invoice attachment stored in BLOB column from


the database.
Script:

CREATE OR REPLACE PROCEDURE xx_unload_ecx_attachment


(p_msg_id IN VARCHAR2,
p_inv_image_dir IN VARCHAR2
) IS
CURSOR cur_new_attmt IS
SELECT fl.file_id,
fl.file_name,
fl.file_data,
dbms_lob.getlength(fl.file_data) file_length
FROM fnd_lobs

fl,

ecx_attachment_maps eam
WHERE eam.fid = fl.file_id
AND eam.msgid = p_msg_id;
v_start

NUMBER DEFAULT 1;

v_bytelen

NUMBER DEFAULT 32000;

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

BOOLEAN DEFAULT TRUE;

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

IF rec_inv.file_length < 32760


THEN
utl_file.put_raw(v_output,
rec_inv.file_data);
utl_file.fflush(v_output);
ELSE
v_position := 40;
v_start

:= 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;

v_len_copy := v_len_copy - v_bytelen;


IF v_len_copy < 32000
THEN
v_bytelen := v_len_copy;
END IF;
END LOOP;
v_position := 80;
utl_file.fclose(v_output);
END IF;
v_position := 90;
dbms_output.put_line(' File_name :' || rec_inv.file_name);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(rpad(nvl(v_inv_file_name,'NA'),31)
|| rpad('ERROR', 21)
|| 'POSITION: '
|| v_position
|| 'Error :'
|| substr(SQLERRM,1,100));
END;
END LOOP;
END xx_unload_ecx_attachment;

Potrebbero piacerti anche