Professional Documents
Culture Documents
Page 1 of 12
Logistics Consulting Logistics & Technology Solutions TMS and WMS Experts suppportwww.tsolco.com
APRO E-Invoicing Proces of electronic invoices (Image in PDF, data file in XML)www.apro.nl
Load Testing Software Advanced load testing software. Free Trial. Download now!www.Paessler.com/load-testing/
FAQ
Procura
Membros
Registre-se
Perfil
MP's
Login/Out
FTP
Mensagem
Autor
Deatho
forte abrao...
t a prxima, que no ser muito demorada!!
OracleSkins.com - SSHR Brand Oracle Self-Service with custom look and feels (CLAFs)www.oracleskins.com
Maucallacta and Coropuna Visit & Explore the Inca Oracle in the highlands of Pampacolca Peruwww.maucallacta.com
Gupta/Centura Developers? Automatically conver to C#/VB.NET and find the developers you need!www.iceteagroup.com
_________________
-Jnior
dr_gori
Moderador
Bem... Creio que a forma mais simples de voc enviar algo por FTP usar o
prprio comando FTP.
Tipo d um HOST no seu form que chama o comando FTP.
Algo assim:
open
ftp.seu_ftp.com.br
seu_login
sua_senha
put
seu_arquivo_local
seu_arquivo_destino
close
http://glufke.net/oracle/viewtopic.php?t=461
19-Oct-10
FTP - Oracle Forms - glufke.net - Dicas truques boas prticas Oracle Forms Reports SQL ... Page 2 of 12
bye
Existe tambm uma outra forma que eu nunca testei... Mas a vai pra quem quiser testar. claro, avisa a galera se funcionou!!!
Cdigo:
rem
rem
rem
rem
rem
rem
----------------------------------------------------------------------Filename:
ftpclient.sql
Purpose:
PL/SQL FTP Client
Date:
19-Nov-2003
Author:
Russ Johnson, Braun Consulting
-----------------------------------------------------------------------
http://glufke.net/oracle/viewtopic.php?t=461
19-Oct-10
FTP - Oracle Forms - glufke.net - Dicas truques boas prticas Oracle Forms Reports SQL ... Page 3 of 12
*DBMS_OUTPUT.PUT_LINE(t_files(i).status||'|'||
*t_files(i).error_message||'|'||
*to_char(t_files(i).bytes_transmitted)||'|'||
*to_char(t_files(i).trans_start,'YYYY-MM-DD HH:MI:SS')||' | '||
*to_char(t_files(i).trans_end,'YYYY-MM-DD HH:MI:SS'));
*ENDIF;
*ENDLOOP;
*ELSE
*DBMS_OUTPUT.PUT_LINE(v_error_message);
*ENDIF;
*
*EXCEPTION
*WHENOTHERS
*THEN
*DBMS_OUTPUT.PUT_LINE(SQLERRM);
*END;
*
*CREDITS
*-------------------*TheW3C'sRFC959thatdescribestheFTPprocess.
*
*http://www.w3c.org
*
*MuchofthePL/SQLcodeinthispackagewasbasedonJavacodewrittenby
*BruceBlackshawofEnterpriseDistributedTechnologiesLtd.Noneofthatcode
*wascopied,buttheobjectsandmethodsgreatlyhelpedmyunderstandingofthe
*FTPClientprocess.
*
*http://www.enterprisedt.com
*
*VERSIONHISTORY
*--------------------
*1.011/19/2002Unit-tested single and multiple transfers between disparate hosts.
*
*
*/
/**
*Exceptions
*
*/
ctrl_exceptionEXCEPTION;
data_exceptionEXCEPTION;
/**
*Constants- FTP valid response codes
*
*/
CONNECT_CODECONSTANTPLS_INTEGER:=220;
USER_CODECONSTANTPLS_INTEGER:=331;
LOGIN_CODECONSTANTPLS_INTEGER:=230;
PWD_CODECONSTANTPLS_INTEGER:=257;
PASV_CODECONSTANTPLS_INTEGER:=227;
CWD_CODECONSTANTPLS_INTEGER:=250;
TSFR_START_CODE1CONSTANTPLS_INTEGER:=125;
TSFR_START_CODE2CONSTANTPLS_INTEGER:=150;
TSFR_END_CODECONSTANTPLS_INTEGER:=226;
QUIT_CODECONSTANTPLS_INTEGER:=221;
SYST_CODECONSTANTPLS_INTEGER:=215;
TYPE_CODECONSTANTPLS_INTEGER:=200;
/**
*FTPFilerecorddatatype
*
*Elements:
*localpath- full directory name in which the local file resides or will reside
*Windows:'d:\oracle\utl_file'
*UNIX:'/home/oracle/utl_file'
*filename- filename and extension for the file to be received or sent
*changingthefilenameforthePUTorGETiscurrentlynotallowed
*Examples:'myfile.dat''myfile20021119.xml'
*remotepath- full directory name in which the local file will be sent or the
*remotefileexists.ShouldbeinUNIXformatregardlessofFTPserver'/one/two/three'
*filetype- reserved for future use, ignored in code
*transfer_mode- 'PUT' or 'GET'
*status- status of the transfer. 'ERROR' or 'SUCCESS'
*error_message- meaningful (hopefully) error message explaining the reason for failure
*bytes_transmitted- how many bytes were sent/received
*trans_start- date/time the transmission started
*trans_end- date/time the transmission ended
*
*/
TYPEr_ftp_recISRECORD(localpathVARCHAR2(255),
filenameVARCHAR2(255),
remotepathVARCHAR2(255),
filetypeVARCHAR2(20),
transfer_modeVARCHAR2(5),
statusVARCHAR2(40),
error_messageVARCHAR2(255),
bytes_transmittedNUMBER,
trans_startDATE,
trans_endDATE);
/**
*FTPFileTable- used to store many files for transfer
*
http://glufke.net/oracle/viewtopic.php?t=461
19-Oct-10
FTP - Oracle Forms - glufke.net - Dicas truques boas prticas Oracle Forms Reports SQL ... Page 4 of 12
*/
TYPEt_ftp_recISTABLEofr_ftp_recINDEXBYBINARY_INTEGER;
/**
*InternalconvenienceprocedureforcreatingpassivehostIPaddress
*andportnumber.
*
*/
PROCEDURECREATE_PASV(p_pasv_cmdINVARCHAR2,
p_pasv_hostOUTVARCHAR2,
p_pasv_portOUTNUMBER);
/**
*FunctionusedtovalidateFTPserverresponsesbasedonthe
*codepassedinp_code.Readssingleormulti-line responses.
*
*/
FUNCTIONVALIDATE_REPLY(p_ctrl_conINOUTUTL_TCP.CONNECTION,
p_codeINPLS_INTEGER,
p_replyOUTVARCHAR2)
RETURNBOOLEAN;
/**
*FunctionusedtovalidateFTPserverresponsesbasedonthe
*codepassedinp_code.Readssingleormulti-line responses.
*Overloadedbecausesomeresponsescanhave2validcodes.
*
*/
FUNCTIONVALIDATE_REPLY(p_ctrl_conINOUTUTL_TCP.CONNECTION,
p_code1INPLS_INTEGER,
p_code2INPLS_INTEGER,
p_replyOUTVARCHAR2)
RETURNBOOLEAN;
/**
*Procedurethathandlestheactualdatatransfer.Meant
*forinternalpackageuse.Returnsinformationaboutthe
*actualtransfer.
*
*/
PROCEDURETRANSFER_ASCII(u_ctrl_conINOUTUTL_TCP.CONNECTION,
p_localpathINVARCHAR2,
p_filenameINVARCHAR2,
p_pasv_hostINVARCHAR2,
p_pasv_portINPLS_INTEGER,
p_transfer_modeINVARCHAR2,
v_statusOUTVARCHAR2,
v_error_messageOUTVARCHAR2,
n_bytes_transmittedOUTNUMBER,
d_trans_startOUTDATE,
d_trans_endOUTDATE);
/**
*FunctiontohandleFTPofmanyfiles.
*ReturnsTRUEifnobatch-level errors occur.
*ReturnsFALSEifabatch-level error occurs.
*
*Parameters:
*
*p_error_msg- error message for batch level errors
*p_files- BRNC_FTP_PKG.t_ftp_rec table type. Accepts
*listoffilestobetransferred(maybeanycombinationofPUTorGET)
*returnsthetableupdatedwithtransferstatus,errormessage,
*bytes_transmitted,transmissionstartdate/timeandtransmissionend
*date/time
*p_username- username for FTP server
*p_password- password for FTP server
*p_hostname- hostname or IP address of server Ex: 'ftp.oracle.com' or '127.0.0.1'
*p_port- port number to connect on. FTP is usually on 21, but this may be overridden
*iftheserverisconfigureddifferently.
*
*/
FUNCTIONFTP_MULTIPLE(p_error_msgOUTVARCHAR2,
p_filesINOUTt_ftp_rec,
p_usernameINVARCHAR2,
p_passwordINVARCHAR2,
p_hostnameINVARCHAR2,
p_portINPLS_INTEGERDEFAULT21)
RETURNBOOLEAN;
/**
*Conveniencefunctionforsingle-file PUT
*
*Parameters:
*p_localpath- full directory name in which the local file resides or will reside
*Windows:'d:\oracle\utl_file'
*UNIX:'/home/oracle/utl_file'
*p_filename- filename and extension for the file to be received or sent
*changingthefilenameforthePUTorGETiscurrentlynotallowed
*Examples:'myfile.dat''myfile20021119.xml'
*p_remotepath- full directory name in which the local file will be sent or the
*remotefileexists.ShouldbeinUNIXformatregardlessofFTPserver'/one/two/three'
*p_username- username for FTP server
*p_password- password for FTP server
*p_hostname- FTP server IP address or host name Ex: 'ftp.oracle.com' or '127.0.0.1'
http://glufke.net/oracle/viewtopic.php?t=461
19-Oct-10
FTP - Oracle Forms - glufke.net - Dicas truques boas prticas Oracle Forms Reports SQL ... Page 5 of 12
BEGIN
p_pasv_host:=REPLACE(SUBSTR(v_pasv_cmd,1,INSTR(v_pasv_cmd,',',1,4)-1),',','.');
n_port_dec:=TO_NUMBER(SUBSTR(v_pasv_cmd,INSTR(v_pasv_cmd,',',1,4)+1,(INSTR(v_pasv_cmd,',',1,5)-(INSTR
(v_pasv_cmd,',',1,4)+1))));
n_port_add:=TO_NUMBER(SUBSTR(v_pasv_cmd,INSTR(v_pasv_cmd,',',1,5)+1,LENGTH(v_pasv_cmd)-INSTR
(v_pasv_cmd,',',1,5)));
p_pasv_port:=(n_port_dec*256)+n_port_add;
EXCEPTION
WHENOTHERS
THEN
--DBMS_OUTPUT.PUT_LINE(SQLERRM);
http://glufke.net/oracle/viewtopic.php?t=461
19-Oct-10
FTP - Oracle Forms - glufke.net - Dicas truques boas prticas Oracle Forms Reports SQL ... Page 6 of 12
RAISE;
ENDCREATE_PASV;
/*****************************************************************************
**Readasingleormulti-line reply from the FTP server and validate
**itagainstthecodepassedinp_code.
**
**ReturnTRUEifreplycodematchesp_code,FALSEifitdoesn'torerror
**occurs
**
**Sendfullserverresponsebacktocallingprocedure
*****************************************************************************/
FUNCTIONVALIDATE_REPLY(p_ctrl_conINOUTUTL_TCP.CONNECTION,
p_codeINPLS_INTEGER,
p_replyOUTVARCHAR2)
RETURNBOOLEAN
IS
n_codeVARCHAR2(3):=p_code;
n_byte_countPLS_INTEGER;
v_msgVARCHAR2(255);
n_line_countPLS_INTEGER:=0;
BEGIN
LOOP
v_msg:=UTL_TCP.GET_LINE(p_ctrl_con);
n_line_count:=n_line_count+1;
IFn_line_count=1
THEN
p_reply:=v_msg;
ELSE
p_reply:=p_reply||SUBSTR(v_msg,4);
ENDIF;
EXITWHENINSTR(v_msg,'-',1,1) <> 4;
ENDLOOP;
IFto_number(SUBSTR(p_reply,1,3))=n_code
THEN
RETURNTRUE;
ELSE
RETURNFALSE;
ENDIF;
EXCEPTION
WHENOTHERS
THEN
p_reply:=SQLERRM;
RETURNFALSE;
ENDVALIDATE_REPLY;
/*****************************************************************************
**Readsasingleormulti-line reply from the FTP server
**
**ReturnTRUEifreplycodematchesp_code1orp_code2,
**FALSEifitdoesn'torerroroccurs
**
**Sendfullserverresponsebacktocallingprocedure
*****************************************************************************/
FUNCTIONVALIDATE_REPLY(p_ctrl_conINOUTUTL_TCP.CONNECTION,
p_code1INPLS_INTEGER,
p_code2INPLS_INTEGER,
p_replyOUTVARCHAR2)
RETURNBOOLEAN
IS
v_code1VARCHAR2(3):=to_char(p_code1);
v_code2VARCHAR2(3):=to_char(p_code2);
v_msgVARCHAR2(255);
n_line_countPLS_INTEGER:=0;
BEGIN
LOOP
v_msg:=UTL_TCP.GET_LINE(p_ctrl_con);
n_line_count:=n_line_count+1;
IFn_line_count=1
THEN
p_reply:=v_msg;
ELSE
p_reply:=p_reply||SUBSTR(v_msg,4);
ENDIF;
EXITWHENINSTR(v_msg,'-',1,1) <> 4;
ENDLOOP;
IFto_number(SUBSTR(p_reply,1,3))IN(v_code1,v_code2)
THEN
RETURNTRUE;
ELSE
RETURNFALSE;
ENDIF;
EXCEPTION
WHENOTHERS
THEN
p_reply:=SQLERRM;
RETURNFALSE;
ENDVALIDATE_REPLY;
/*****************************************************************************
**Handlesactualdatatransfer.Respondswithstatus,errormessage,and
**transferstatistics.
**
**Potentialerrorscouldbewithconnectionorfilei/o
**
*****************************************************************************/
PROCEDURETRANSFER_ASCII(u_ctrl_conINOUTUTL_TCP.CONNECTION,
p_localpathINVARCHAR2,
http://glufke.net/oracle/viewtopic.php?t=461
19-Oct-10
FTP - Oracle Forms - glufke.net - Dicas truques boas prticas Oracle Forms Reports SQL ... Page 7 of 12
p_filenameINVARCHAR2,
p_pasv_hostINVARCHAR2,
p_pasv_portINPLS_INTEGER,
p_transfer_modeINVARCHAR2,
v_statusOUTVARCHAR2,
v_error_messageOUTVARCHAR2,
n_bytes_transmittedOUTNUMBER,
d_trans_startOUTDATE,
d_trans_endOUTDATE)
IS
u_data_conUTL_TCP.CONNECTION;
u_filehandleUTL_FILE.FILE_TYPE;
v_tsfr_modeVARCHAR2(3):=p_transfer_mode;
v_modeVARCHAR2(1);
v_tsfr_cmdVARCHAR2(10);
v_bufferVARCHAR2(32767);
v_localpathVARCHAR2(255):=p_localpath;
v_filenameVARCHAR2(255):=p_filename;
v_hostVARCHAR2(20):=p_pasv_host;
n_portPLS_INTEGER:=p_pasv_port;
n_bytesNUMBER;
v_msgVARCHAR2(255);
v_replyVARCHAR2(1000);
v_err_statusVARCHAR2(20):='ERROR';
BEGIN
/**InitializesomeofourOUTvariables**/
v_status:='SUCCESS';
v_error_message:='';
n_bytes_transmitted:=0;
IFUPPER(v_tsfr_mode)='PUT'
THEN
v_mode:='r';
v_tsfr_cmd:='STOR';
ELSIFUPPER(v_tsfr_mode)='GET'
THEN
v_mode:='w';
v_tsfr_cmd:='RETR';
ENDIF;
/**OpendataconnectiononPassivehostandport**/
u_data_con:=UTL_TCP.OPEN_CONNECTION(v_host,n_port);
/**Openthelocalfiletoreadandtransferdata**/
u_filehandle:=UTL_FILE.FOPEN(v_localpath,v_filename,v_mode);
/**SendtheSTORcommandtotelltheserverwe'regoingtouploadafile**/
n_bytes:=UTL_TCP.WRITE_LINE(u_ctrl_con,v_tsfr_cmd||v_filename);
IFVALIDATE_REPLY(u_ctrl_con,TSFR_START_CODE1,TSFR_START_CODE2,v_reply)=FALSE
THEN
RAISEctrl_exception;
ENDIF;
d_trans_start:=SYSDATE;
IFUPPER(v_tsfr_mode)='PUT'
THEN
LOOP
BEGIN
UTL_FILE.GET_LINE(u_filehandle,v_buffer);
EXCEPTION
WHENNO_DATA_FOUND
THEN
EXIT;
END;
n_bytes:=UTL_TCP.WRITE_LINE(u_data_con,v_buffer);
n_bytes_transmitted:=n_bytes_transmitted+n_bytes;
ENDLOOP;
ELSIFUPPER(v_tsfr_mode)='GET'
THEN
LOOP
BEGIN
v_buffer:=UTL_TCP.GET_LINE(u_data_con,TRUE);
/**SometimestheTCP/IPbuffersendsnulldata**/
/**weonlywanttoreceivetheactualdata**/
IFv_bufferISNOTNULL
THEN
UTL_FILE.PUT_LINE(u_filehandle,v_buffer);
n_bytes:=LENGTH(v_buffer);
n_bytes_transmitted:=n_bytes_transmitted+n_bytes;
ENDIF;
EXCEPTION
WHENUTL_TCP.END_OF_INPUT
THEN
EXIT;
END;
http://glufke.net/oracle/viewtopic.php?t=461
19-Oct-10
FTP - Oracle Forms - glufke.net - Dicas truques boas prticas Oracle Forms Reports SQL ... Page 8 of 12
ENDLOOP;
ENDIF;
/**Flushthebufferonthedataconnection**/
--UTL_TCP.FLUSH(u_data_con);
d_trans_end:=SYSDATE;
/**Closethefile**/
UTL_FILE.FCLOSE(u_filehandle);
/**ClosetheDataConnection**/
UTL_TCP.CLOSE_CONNECTION(u_data_con);
/**Verifythetransfersucceeded**/
IFVALIDATE_REPLY(u_ctrl_con,TSFR_END_CODE,v_reply)=FALSE
THEN
RAISEctrl_exception;
ENDIF;
EXCEPTION
WHENctrl_exception
THEN
v_status:=v_err_status;
v_error_message:=v_reply;
IFUTL_FILE.IS_OPEN(u_filehandle)
THEN
UTL_FILE.FCLOSE(u_filehandle);
ENDIF;
UTL_TCP.CLOSE_CONNECTION(u_data_con);
WHENUTL_FILE.invalid_path
THEN
v_status:=v_err_status;
v_error_message:='Directory'||v_localpath||'isnotavailabletoUTL_FILE.Checktheinit.orafile
for valid UTL_FILE directories.';
UTL_TCP.CLOSE_CONNECTION(u_data_con);
WHENUTL_FILE.invalid_operation
THEN
v_status:=v_err_status;
IFUPPER(v_tsfr_mode)='PUT'
THEN
v_error_message:='Thefile'||V_filename||'inthedirectory'||v_localpath||'couldnotbe
opened for reading.';
ELSIFUPPER(v_tsfr_mode)='GET'
THEN
v_error_message:='Thefile'||V_filename||'inthedirectory'||v_localpath||'couldnotbe
opened for writing.';
ENDIF;
IFUTL_FILE.IS_OPEN(u_filehandle)
THEN
UTL_FILE.FCLOSE(u_filehandle);
ENDIF;
UTL_TCP.CLOSE_CONNECTION(u_data_con);
WHENUTL_FILE.read_error
THEN
v_status:=v_err_status;
v_error_message:='Thesystemencounteredanerrorwhiletryingtoread'||v_filename||'inthe
directory '||v_localpath;
IFUTL_FILE.IS_OPEN(u_filehandle)
THEN
UTL_FILE.FCLOSE(u_filehandle);
ENDIF;
UTL_TCP.CLOSE_CONNECTION(u_data_con);
WHENUTL_FILE.write_error
THEN
v_status:=v_err_status;
v_error_message:='Thesystemencounteredanerrorwhiletryingtowriteto'||v_filename||'inthe
directory '||v_localpath;
IFUTL_FILE.IS_OPEN(u_filehandle)
THEN
UTL_FILE.FCLOSE(u_filehandle);
ENDIF;
UTL_TCP.CLOSE_CONNECTION(u_data_con);
WHENUTL_FILE.internal_error
THEN
v_status:=v_err_status;
v_error_message:='TheUTL_FILEpackageencounteredanunexpectedinternalsystemerror.';
IFUTL_FILE.IS_OPEN(u_filehandle)
THEN
UTL_FILE.FCLOSE(u_filehandle);
ENDIF;
UTL_TCP.CLOSE_CONNECTION(u_data_con);
WHENOTHERS
THEN
http://glufke.net/oracle/viewtopic.php?t=461
19-Oct-10
FTP - Oracle Forms - glufke.net - Dicas truques boas prticas Oracle Forms Reports SQL ... Page 9 of 12
v_status:=v_err_status;
v_error_message:=SQLERRM;
IFUTL_FILE.IS_OPEN(u_filehandle)
THEN
UTL_FILE.FCLOSE(u_filehandle);
ENDIF;
UTL_TCP.CLOSE_CONNECTION(u_data_con);
ENDTRANSFER_ASCII;
/*****************************************************************************
**HandlesconnectiontohostandFTPofmultiplefiles
**FilescanbeanycombinationofPUTandGET
**
*****************************************************************************/
FUNCTIONFTP_MULTIPLE(p_error_msgOUTVARCHAR2,
p_filesINOUTt_ftp_rec,
p_usernameINVARCHAR2,
p_passwordINVARCHAR2,
p_hostnameINVARCHAR2,
p_portINPLS_INTEGERDEFAULT21)
RETURNBOOLEAN
IS
v_usernameVARCHAR2(30):=p_username;
v_passwordVARCHAR2(30):=p_password;
v_hostnameVARCHAR2(30):=p_hostname;
n_portPLS_INTEGER:=p_port;
u_ctrl_conUTL_TCP.CONNECTION;
n_byte_countPLS_INTEGER;
n_first_indexNUMBER;
v_msgVARCHAR2(250);
v_replyVARCHAR2(1000);
v_pasv_hostVARCHAR2(20);
n_pasv_portNUMBER;
invalid_transferEXCEPTION;
BEGIN
p_error_msg:='FTPSuccessful';--Assume the overall transfer will succeed
/**Attempttoconnecttothehostmachine**/
u_ctrl_con:=UTL_TCP.OPEN_CONNECTION(v_hostname,n_port);
IFVALIDATE_REPLY(u_ctrl_con,CONNECT_CODE,v_reply)=FALSE
THEN
RAISEctrl_exception;
ENDIF;
/**Sendusername**/
n_byte_count:=UTL_TCP.WRITE_LINE(u_ctrl_con,'USER'||v_username);
IFVALIDATE_REPLY(u_ctrl_con,USER_CODE,v_reply)=FALSE
THEN
RAISEctrl_exception;
ENDIF;
/**Sendpassword**/
n_byte_count:=UTL_TCP.WRITE_LINE(u_ctrl_con,'PASS'||v_password);
IFVALIDATE_REPLY(u_ctrl_con,LOGIN_CODE,v_reply)=FALSE
THEN
RAISEctrl_exception;
ENDIF;
/**Weshouldbeloggedin,timetotransferallfiles**/
FORiINp_files.FIRST..p_files.LAST
LOOP
IFp_files.EXISTS(i)
THEN
BEGIN
/**Changetotheremotepathdirectory**/
n_byte_count:=UTL_TCP.WRITE_LINE(u_ctrl_con,'CWD'||p_files(i).remotepath);
IFVALIDATE_REPLY(u_ctrl_con,CWD_CODE,v_reply)=FALSE
THEN
RAISEctrl_exception;
ENDIF;
/**SwitchtoIMAGEmode**/
n_byte_count:=UTL_TCP.WRITE_LINE(u_ctrl_con,'TYPEI');
IFVALIDATE_REPLY(u_ctrl_con,TYPE_CODE,v_reply)=FALSE
THEN
RAISEctrl_exception;
ENDIF;
/**GetaPassiveconnectiontousefordatatransfer**/
n_byte_count:=UTL_TCP.WRITE_LINE(u_ctrl_con,'PASV');
IFVALIDATE_REPLY(u_ctrl_con,PASV_CODE,v_reply)=FALSE
THEN
RAISEctrl_exception;
ENDIF;
CREATE_PASV(SUBSTR(v_reply,INSTR(v_reply,'(',1,1)+1,INSTR(v_reply,')',1,1)-INSTR
(v_reply,'(',1,1)-1),v_pasv_host,n_pasv_port);
/**TransferData**/
IFUPPER(p_files(i).transfer_mode)='PUT'
http://glufke.net/oracle/viewtopic.php?t=461
19-Oct-10
FTP - Oracle Forms - glufke.net - Dicas truques boas prticas Oracle Forms Reports S...
Page 10 of 12
THEN
TRANSFER_ASCII(u_ctrl_con,
p_files(i).localpath,
p_files(i).filename,
v_pasv_host,
n_pasv_port,
p_files(i).transfer_mode,
p_files(i).status,
p_files(i).error_message,
p_files(i).bytes_transmitted,
p_files(i).trans_start,
p_files(i).trans_end);
ELSIFUPPER(p_files(i).transfer_mode)='GET'
THEN
TRANSFER_ASCII(u_ctrl_con,
p_files(i).localpath,
p_files(i).filename,
v_pasv_host,
n_pasv_port,
p_files(i).transfer_mode,
p_files(i).status,
p_files(i).error_message,
p_files(i).bytes_transmitted,
p_files(i).trans_start,
p_files(i).trans_end);
ELSE
RAISEinvalid_transfer;-- Raise an exception here
ENDIF;
EXCEPTION
WHENctrl_exception
THEN
p_files(i).status:='ERROR';
p_files(i).error_message:=v_reply;
WHENinvalid_transfer
THEN
p_files(i).status:='ERROR';
p_files(i).error_message:='Invalidtransfermethod.UsePUTorGET.';
END;
ENDIF;
ENDLOOP;
/**SendQUITcommand**/
n_byte_count:=UTL_TCP.WRITE_LINE(u_ctrl_con,'QUIT');
/**Don'tneedtovalidateQUIT,justclosetheconnection**/
UTL_TCP.CLOSE_CONNECTION(u_ctrl_con);
RETURNTRUE;
EXCEPTION
WHENctrl_exception
THEN
p_error_msg:=v_reply;
UTL_TCP.CLOSE_ALL_CONNECTIONS;
RETURNFALSE;
WHENOTHERS
THEN
p_error_msg:=SQLERRM;
UTL_TCP.CLOSE_ALL_CONNECTIONS;
RETURNFALSE;
ENDFTP_MULTIPLE;
/*****************************************************************************
**Conveniencefunctionforsingle-file PUT
**FormatsfileinformationforFTP_MULTIPLEfunctionandcallsit.
**
*****************************************************************************/
FUNCTIONPUT(p_localpathINVARCHAR2,
p_filenameINVARCHAR2,
p_remotepathINVARCHAR2,
p_usernameINVARCHAR2,
p_passwordINVARCHAR2,
p_hostnameINVARCHAR2,
v_statusOUTVARCHAR2,
v_error_messageOUTVARCHAR2,
n_bytes_transmittedOUTNUMBER,
d_trans_startOUTDATE,
d_trans_endOUTDATE,
p_portINPLS_INTEGERDEFAULT21,
p_filetypeINVARCHAR2:='ASCII')
RETURNBOOLEAN
IS
t_filest_ftp_rec;
v_usernameVARCHAR2(30):=p_username;
v_passwordVARCHAR2(50):=p_password;
v_hostnameVARCHAR2(100):=p_hostname;
n_portPLS_INTEGER:=p_port;
v_err_msgVARCHAR2(255);
b_ftpBOOLEAN;
BEGIN
t_files(1).localpath:=p_localpath;
t_files(1).filename:=p_filename;
t_files(1).remotepath:=p_remotepath;
t_files(1).filetype:=p_filetype;
t_files(1).transfer_mode:='PUT';
b_ftp:=FTP_MULTIPLE(v_err_msg,
http://glufke.net/oracle/viewtopic.php?t=461
19-Oct-10
FTP - Oracle Forms - glufke.net - Dicas truques boas prticas Oracle Forms Reports S...
Page 11 of 12
t_files,
v_username,
v_password,
v_hostname,
n_port);
IFb_ftp=FALSE
THEN
v_status:='ERROR';
v_error_message:=v_err_msg;
RETURNFALSE;
ELSIFb_ftp=TRUE
THEN
v_status:=t_files(1).status;
v_error_message:=t_files(1).error_message;
n_bytes_transmitted:=t_files(1).bytes_transmitted;
d_trans_start:=t_files(1).trans_start;
d_trans_end:=t_files(1).trans_end;
RETURNTRUE;
ENDIF;
EXCEPTION
WHENOTHERS
THEN
v_status:='ERROR';
v_error_message:=SQLERRM;
RETURNFALSE;
--DBMS_OUTPUT.PUT_LINE(SQLERRM);
ENDPUT;
/*****************************************************************************
**Conveniencefunctionforsingle-file GET
**FormatsfileinformationforFTP_MULTIPLEfunctionandcallsit.
**
*****************************************************************************/
FUNCTIONGET(p_localpathINVARCHAR2,
p_filenameINVARCHAR2,
p_remotepathINVARCHAR2,
p_usernameINVARCHAR2,
p_passwordINVARCHAR2,
p_hostnameINVARCHAR2,
v_statusOUTVARCHAR2,
v_error_messageOUTVARCHAR2,
n_bytes_transmittedOUTNUMBER,
d_trans_startOUTDATE,
d_trans_endOUTDATE,
p_portINPLS_INTEGERDEFAULT21,
p_filetypeINVARCHAR2:='ASCII')
RETURNBOOLEAN
IS
t_filest_ftp_rec;
v_usernameVARCHAR2(30):=p_username;
v_passwordVARCHAR2(50):=p_password;
v_hostnameVARCHAR2(100):=p_hostname;
n_portPLS_INTEGER:=p_port;
v_err_msgVARCHAR2(255);
b_ftpBOOLEAN;
BEGIN
t_files(1).localpath:=p_localpath;
t_files(1).filename:=p_filename;
t_files(1).remotepath:=p_remotepath;
t_files(1).filetype:=p_filetype;
t_files(1).transfer_mode:='GET';
b_ftp:=FTP_MULTIPLE(v_err_msg,
t_files,
v_username,
v_password,
v_hostname,
n_port);
IFb_ftp=FALSE
THEN
v_status:='ERROR';
v_error_message:=v_err_msg;
RETURNFALSE;
ELSIFb_ftp=TRUE
THEN
v_status:=t_files(1).status;
v_error_message:=t_files(1).error_message;
n_bytes_transmitted:=t_files(1).bytes_transmitted;
d_trans_start:=t_files(1).trans_start;
d_trans_end:=t_files(1).trans_end;
RETURNTRUE;
ENDIF;
EXCEPTION
WHENOTHERS
THEN
v_status:='ERROR';
v_error_message:=SQLERRM;
RETURNFALSE;
--DBMS_OUTPUT.PUT_LINE(SQLERRM);
ENDGET;
END BRNC_FTP_PKG;
/
_________________
Thomas F. G. / NO GUOB TECHDAY!!!
Editado pela ltima vez por dr_gori em Qui, 30 Jun 2005 10:19 am, num total de 1 vez
http://glufke.net/oracle/viewtopic.php?t=461
19-Oct-10
FTP - Oracle Forms - glufke.net - Dicas truques boas prticas Oracle Forms Reports S...
Page 12 of 12
Deatho
_________________
-Jnior
Antigas primeiro
Ir
Todos os horrios so GMT - 3 Hours
Pgina 1 de 1
..
http://glufke.net/oracle/viewtopic.php?t=461
19-Oct-10