Sunday, December 27, 2009

writing data file for lock box

create or replace procedure xpc_lock_receipt
is
l_batch_number varchar2(250);
l_invoice_number varchar2(250);
l_receipt_date varchar2(250);
l_comments varchar2(250);
L_amount number;
l_receipt_method_name varchar2(250);
l_receipt_number varchar2(250);
l_org_id number;
n number;
i number:=0;
TYPE L_REC_TYPE IS RECORD(L1 VARCHAR2(4000));
TYPE L_REC_TBL_TYPE IS TABLE OF L_REC_TYPE INDEX BY BINARY_INTEGER ;
X_L_REC_TBL_TYPE L_REC_TBL_TYPE;
fileHandler utl_file.file_type;
data varchar2(4000);
cursor c1 is
select batch_number,invoice_number,receipt_date,comments,amount,receipt_method_name,receipt_number,org_id
from xpc_receipt_staging;
BEGIN
filehandler := utl_file.fopen('//','write.txt','W');
FOR erec in c1 loop
i:=i+1;
l_batch_number:= erec.batch_number;
l_invoice_number:= erec.invoice_number;
l_receipt_date :=erec.receipt_date;
l_comments:= erec.comments;
L_amount :=erec.amount;
l_receipt_method_name:=erec.receipt_method_name;
l_receipt_number:= erec.receipt_number;
l_org_id :=erec.org_id;
select xpc_receipt_interface_Id.nextval into l_receipt_number from dual;
data:=rpad('A',2,' ')rpad('2',5,' ')rpad(l_amount,10,' ')rpad(l_receipt_number,29,' ')rpad(l_receipt_date,20,' ')rpad(l_comments,20,' ')rpad(l_BATCH_NUMBER,24,' ')rpad(l_invoice_number,100,' ');
X_L_REC_TBL_TYPE(I).L1:=data;
end loop;
dbms_output.put_line(i);
UTL_FILE.PUTF(fileHandler,'1 ZZF1 12345');
UTL_FILE.PUTF(fileHandler,'\n');
for n in 1..i loop
UTL_FILE.PUTF(fileHandler,X_L_REC_TBL_TYPE(n).L1);
UTL_FILE.PUTF(fileHandler,'\n');
end loop;
UTL_FILE.FCLOSE(fileHandler);
delete from xpc_receipt_staging;
end;