Collections concept

Hi
I am writing a procedure where it takes collection as IN parameter and gets ref_cursor as OUT parameter i am able to write it without procedure in pl/sql block
but not able to write in procedure.
-created collection t_deptno_c and ref cursor is kept in package
DECLARE
v_dept t_deptno_c;
v_ref dept_pack.ref_cursor1;
BEGIN
SELECT deptno BULK COLLECT INTO v_dept FROM dept;
open
v_ref for select * from emp where deptno in (select to_number(column_value) from table(cast(v_dept as t_deptno_c)));
END;
the above works but not able to convert it into procedure
Any help appreciated.
Thanks in Advance

Anything wrong with this:
CREATE OR REPLACE PROCEDURE get_emp_list(p_dept_c IN t_deptno_c,
p_ref OUT dept_pack.ref_cursor1)
IS
v_dept_c t_deptno_c;
BEGIN
SELECT deptno BULK COLLECT INTO v_dept_c FROM dept;
OPEN p_ref FOR SELECT * FROM emp WHERE deptno IN (SELECT to_number(column_value) FROM TABLE(CAST(p_dept_c AS t_deptno_c)));
END;

Similar Messages

  • Bulk & collection concept

    Can u please explain me the bulk & collection concept ?
    why we use bulk & collection ?
    when to use bulk & collection ?
    and performance wise which is better ?
    thanks in advance

    user10685034 wrote:
    Can u please explain me the bulk & collection concept ?
    why we use bulk & collection ?
    when to use bulk & collection ?
    and performance wise which is better ? In PL/SQL programming the SQL part is executed by SQL Engine and PL is executed by PL/SQL Engine.
    So in general any SQL statement available in PL/SQL is send to the SQL engine by the PL/SQL Engine and processed and returned back. This process of sending and getting it back is called Context Switch.
    Consider the following code.
    for i in (select empno from emp where deptno = 100)
    loop
      update emp set sal = sal*100 where empno = i.empno;
    end loop; Lets consider that there are 20 employee under deptno 100. So now the UPDATE statement is executed 20 times. That is there is 20 context switch.
    Introduction of bulk collect reduces this. Consider the following code.
    declare
      Type EmpTbl as table of number(10);
      lEmpNo EmpTbl;
    begin
      select empno bulk collect into lEmpNo from emp where deptno = 100;
      forall i in 1..lEmpNo.count
        update emp set sal = sal*100 where empno = lEmpNo(i);
    end; Here in the above code what i am doing is
    1. Created a PL/SQL Table called EmpTbl.
    2. Created a variable lEmpNo of type EmpTbl.
    3. Collected all the empno for deptno = 100 into the lEmpNo.
    4. Using FORALL send all the empno in the PL/SQL table to update at a single shot. By this the context switch is reduced extensively.

  • Using collections to insert

    Hi ,
    To improve the performance of the insert statement i was adviced to use the collections.
    I'm not getting any idea on how to use collection concept in my code.
    Could you please give me a skelton approach to do that.
    The following is the sample code (the logic is same in prod code,instead of for 1 -100000 we have cursor in prod) without using collections
    create table pop_tab (     col1 number ,col2 number ,col3 number ,col4 number ) 
    create or replace package test_collect
    is
      procedure proc_lvl_ld ;
      procedure proc_pop_tab (v_var1 number ,v_var2 number ,v_var3 number ,v_var4 number) ;
    end test_collect;
    create or replace package body test_collect
    is
       procedure proc_lvl_ld
        is
          v_cnt number := 1 ;
          v_var1 NUMBER ;
          v_var2 NUMBER ;
          v_var3 NUMBER ;
          v_var4 NUMBER;
         begin
          for i in 1 .. 100000 loop
            v_var1 := v_cnt + 1;
            v_var2 := v_cnt + 2;
            v_var3 := v_cnt + 3;
            v_var4 := v_cnt + 4;
            v_cnt  := v_cnt + 1;
          proc_pop_tab (v_var1 ,v_var2,v_var3,v_var4);
         end loop;
          commit;
          exception when others then
           DBMS_OUTPUT.PUT_LINE ( 'proc_lvl_load'||sqlcode||','||sqlerrm );
        end proc_lvl_ld;
         procedure proc_pop_tab (v_var1 number ,v_var2 number ,v_var3 number ,v_var4 number)
          is
           begin
             insert into pop_tab (col1,col2,col3,col4)
                     values (v_var1,v_var2,v_var3,v_var4) ;
           exception when others then
           DBMS_OUTPUT.PUT_LINE ( 'proc_pop_tab'||sqlcode||','||sqlerrm );             
           end proc_pop_tab;
    end test_collect;Now i tried a bit using colliection to improve the insert performance and stuck how to use the collections
    create or replace package body test_collect
    is
       procedure proc_lvl_ld
        is
           TYPE numtab1 IS TABLE OF NUMBER (4) INDEX BY BINARY_INTEGER;
           data1    numtab1;
           TYPE numtab2 IS TABLE OF NUMBER (4) INDEX BY BINARY_INTEGER;
           data2    numtab2;
           TYPE numtab3 IS TABLE OF NUMBER (4) INDEX BY BINARY_INTEGER;
           data3    numtab3;
           TYPE numtab4 IS TABLE OF NUMBER (4) INDEX BY BINARY_INTEGER;
           data4    numtab4;
          v_cnt number := 1 ;
         begin
          for i in 1 .. 100000 loop
            data1(data1.count +1) := v_cnt + 1;
            data2(data2.count +1) := v_cnt + 1;
            data3(data3.count +1) := v_cnt + 1;
            data4(data4.count +1) := v_cnt + 1;
            v_cnt  := v_cnt + 1;
          --proc_pop_tab (v_var1 ,v_var2,v_var3,v_var4);
         end loop;
           forall j in 1 ..data1.count
             insert into pop_tab
                 values (  --- How to use  the above collection variables here
          commit;
          exception when others then
           DBMS_OUTPUT.PUT_LINE ( 'proc_lvl_load'||sqlcode||','||sqlerrm );
        end proc_lvl_ld;
    end;Could you please help me out in this and let me know if i'm not clear
    Edited by: Smile on Sep 7, 2012 11:37 AM

    Use:
           forall j in 1 ..data1.count
             insert into pop_tab
                 values (data1(j),data2(j),data3(j),data4(j));       Now:
    SQL> create or replace package body test_collect
      2   is
      3     procedure proc_lvl_ld
      4      is
      5     TYPE numtab1 IS TABLE OF NUMBER (4) INDEX BY BINARY_INTEGER;
      6     data1    numtab1;
      7     TYPE numtab2 IS TABLE OF NUMBER (4) INDEX BY BINARY_INTEGER;
      8     data2    numtab2;
      9     TYPE numtab3 IS TABLE OF NUMBER (4) INDEX BY BINARY_INTEGER;
    10     data3    numtab3;
    11     TYPE numtab4 IS TABLE OF NUMBER (4) INDEX BY BINARY_INTEGER;
    12     data4    numtab4;
    13    v_cnt number := 1 ;
    14   begin
    15    for i in 1 .. 100000 loop
    16      data1(data1.count +1) := v_cnt + 1;
    17      data2(data2.count +1) := v_cnt + 1;
    18      data3(data3.count +1) := v_cnt + 1;
    19      data4(data4.count +1) := v_cnt + 1;
    20      v_cnt  := v_cnt + 1;
    21        --proc_pop_tab (v_var1 ,v_var2,v_var3,v_var4);
    22       end loop;
    23     forall j in 1 ..data1.count
    24       insert into pop_tab
    25       values (data1(j),data2(j),data3(j),data4(j));  
    26    commit;
    27    exception when others then
    28     DBMS_OUTPUT.PUT_LINE ( 'proc_lvl_load'||sqlcode||','||sqlerrm );
    29   
    30      end proc_lvl_ld;
    31  end;
    32  /
    Package body created.
    SQL> exec test_collect.proc_lvl_ld;
    proc_lvl_load-6502,ORA-06502: PL/SQL: numeric or value error: number precision too large
    PL/SQL procedure successfully completed.
    SQL> Why? You declared associative arrays as NUMBER(4) while values you are trying to assign their elements are in range:
    for i in 1 .. 100000 loopIf I change it to:
    for i in 1 .. 9998 loopThen:
    SQL> create or replace package body test_collect
      2   is
      3     procedure proc_lvl_ld
      4      is
      5     TYPE numtab1 IS TABLE OF NUMBER (4) INDEX BY BINARY_INTEGER;
      6     data1    numtab1;
      7     TYPE numtab2 IS TABLE OF NUMBER (4) INDEX BY BINARY_INTEGER;
      8     data2    numtab2;
      9     TYPE numtab3 IS TABLE OF NUMBER (4) INDEX BY BINARY_INTEGER;
    10     data3    numtab3;
    11     TYPE numtab4 IS TABLE OF NUMBER (4) INDEX BY BINARY_INTEGER;
    12     data4    numtab4;
    13    v_cnt number := 1 ;
    14   begin
    15    for i in 1 .. 9998 loop
    16      data1(data1.count +1) := v_cnt + 1;
    17      data2(data2.count +1) := v_cnt + 1;
    18      data3(data3.count +1) := v_cnt + 1;
    19      data4(data4.count +1) := v_cnt + 1;
    20      v_cnt  := v_cnt + 1;
    21        --proc_pop_tab (v_var1 ,v_var2,v_var3,v_var4);
    22       end loop;
    23     forall j in 1 ..data1.count
    24       insert into pop_tab
    25       values (data1(j),data2(j),data3(j),data4(j));  
    26    commit;
    27    exception when others then
    28     DBMS_OUTPUT.PUT_LINE ( 'proc_lvl_load'||sqlcode||','||sqlerrm );
    29   
    30      end proc_lvl_ld;
    31  end;
    32  /
    Package body created.
    SQL> exec test_collect.proc_lvl_ld;
    PL/SQL procedure successfully completed.
    SQL> select count(*) from pop_tab
      2  /
      COUNT(*)
          9998
    SQL> SY.

  • Publish a mirror of a collection or folder

    Is there a way to publish a mirrored copy of a collection including having all of the sub folder hierarchy intact?  I am trying to start an account on SmugMug and I do not want to have to replicate all of my work on collections and smart collections for the publish section. I just want to publish exact copies of them to SmugMug. Why can't we just drag a collection into a published service?

    I think maybe I understand your question, my apologies if not.
    I think you may be having a similar problem to that which I have with LR – namely I publish photos in several ways, to Flickr, to SmugMug, to the hard disk for my iPad and over the network to my TV and I want each of them to have exactly the same content.    With my published photos spread across 34 different Smart collections I now have quite a maintenance overhead if I change these smart collections because each publish service contains a replica of all 34 and if I want to do the same with another publish service then tediously I have to recreate all of 34 the smart collection yet again.
    Hopefully this is somehow close to the problem you are describing so here are some answers to the kind of questions I would want answered…
    Q – Can you tell one publish service to simply mirror a set Collections / Smart Collections declared in another publish service?
    No you cannot – but not surprised because not all publishing services support a hierarchy, for example SmugMug does but Flickr does not.
    Q – Can you tell a publish service to simply mirror a set of Collections / Smart Collections declared in another folder of Collections / Smart Collections?
    No you cannot.
    Q – Can you have a folder of Collections / Smart Collections which automatically mirrors the content of another folder?
    No you cannot.
    Q – Can I copy a Smart Collection and Paste or drag copy it into another folder / publish service?
    No you cannot which in my view is strange omission, but you can export the settings of a smart collection to an external file and re-import these settings into a published service.   One at a time only!
    Q – Can I create a Collection in such a way that it automatically mirrors the content of another collection?
    No I don’t think so.
    Q – Can I create a Smart collection in such a way that it automatically mirrors the logic of another smart collection?
    Unfortunately not and I think a great shame.   Ideally I would like to see LR be able to inherit the settings of another Smart collection and optionally extend the logic – but you can’t.
    Q – Can I create a Smart Collection that will automatically mirror the content of a non-Smart Collection (published or not).
    Interestingly you can!   In your smart collection you can simply say “Source Collection” or “Source Published Collection” contains whatever the name of the collection you wish to mirror.  It is disappointing that there is no option for “Source Smart Collection” in the available rules for the logic.
    Hopefully one or more of these Q&A’s is relevant to you.
    If I got any of the above wrong I would be delighted to be corrected by anyone.
    Alan.
    PS – I would be more delighted if LR 6 introduced the concept of a “Mirrored Folder” which automatically replicates the content of a Collection folder – unlikely I think, because each publish service seems to have customisation of these folders.   I would also be delighted if LR 6 added the “Source Smart Collection” and “Source Published Smart Collection” to the list of available rules because this would add powerful opportunities to the Smart Collection concept as well as allowing me to maintain 34 SCs instead of 136 of them.

  • UTL_FILE reqeust taking too much time for completion

    Hi,
    We are running utl_file reqeust.
    the select statement fetching 6000 records, for this it taking 22 mins for completion.
    the code is
    CREATE OR REPLACE PACKAGE BODY "XXC"."XXC_MOD_IN_068_AP_TO_FIS_PKG"
    AS
    * Module Type : PL/SQL
    * Module Name : XXC_MOD_IN_068_AP_FIS_PKG
    * Description : This package is used for AP to Fiscal Interface.
    * Run Env. : SQL*Plus
    * Procedure Name Description
    * XXC_MOD_068_AP_PR XXC_MOD_068_AP_PR Procedure is used to insert transactions
    * into CSV OutPut File from Oracle Account Payables.
    * Calling Module: None
    * Modules Called: XXC_COMMON_INT_PK.INSERT_AUDIT
    * Module Number : MOD_IN_068
    * Known Bugs and Restrictions: none
    * History
    * =======
    * Version Name Date Description of Change
    * 0.1 Sanjeev Khurana 25-JULY-2011 Initial Creation.
    * 0.2 Rohit 09-DEC-2011 Updated header details for the file
    * 0.3 Amit Kulwal 28-AUG-2012 Updated the cursor query for incident 671520
    * 0.4 Swaraj Goud 20-Nov-2012 Updated as per the CR 671520
    | PACKAGE BODY
    -- Actual Code Start Here
    -- Procedure : XXC_MOD_068_AP_PR
    -- Description : XXC_MOD_068_AP_PR Procedure is used to insert transactions
    -- into CSV OUTPUT File from Oracle Account Payables.
    -- Parameters:
    -- Parm Name I/O Description
    -- p_errbuf OUT Error message.
    -- p_retcode OUT Error code. Returns 0 if no errors otherwise returns 1.
    -- p_start_date IN Start Date
    -- p_end_date IN End Date
    PROCEDURE xxc_mod_068_ap_pr (
    p_errbuf OUT VARCHAR2,
    p_retcode OUT NUMBER,
    p_start_date IN VARCHAR2,
    p_end_date IN VARCHAR2
    IS
    -- Define variables and assign default values
    l_sucess_count NUMBER := 0;
    l_error_count NUMBER := 0;
    -- Standard declaration
    l_source VARCHAR2 (10);
    l_target VARCHAR2 (10);
    lc_module_description VARCHAR2 (50)
    := 'MOD_IN_068 - AP to Fiscal';
    l_status CONSTANT VARCHAR2 (50) := 'NEW';
    p_status NUMBER;
    l_batch_id NUMBER;
    l_batch_id_next NUMBER
    := apps_common_out_batch_id_s1.NEXTVAL;
    l_proc_name VARCHAR2 (100) := 'XXC_MOD_IN_068';
    l_request_id NUMBER
    := fnd_global.conc_request_id;
    l_audit_master_id NUMBER := NULL;
    l_mod_code VARCHAR2 (100);
    l_log_type NUMBER := 1; --INFORMATION
    l_det_status_success NUMBER := 0; --SUCCESS
    l_det_status_inprocess NUMBER := 3; --INPROCESS
    l_det_status_rejected NUMBER := 4; --REJECTED
    l_det_status_err NUMBER := 3; --Error
    l_det_status_complete NUMBER := 9; --COMPLETE
    -- Standard who Columns
    l_created_by NUMBER := fnd_global.user_id;
    l_creation_date DATE := SYSDATE;
    l_last_update_date DATE := SYSDATE;
    l_last_update_login NUMBER := fnd_global.user_id;
    v_file UTL_FILE.file_type;
    l_location VARCHAR2 (150);
    l_archive_location VARCHAR2 (150);
    l_date VARCHAR2 (50);
    l_filename VARCHAR2 (50);
    l_open_mode VARCHAR2 (1) := 'W';
    --- l_max_linesize NUMBER := 32767;
    l_max_linesize VARCHAR2 (150); -- Updated 09-Nov-2012
    --Cursor is used to fetch valid records for the interface
    CURSOR get_ap_data_inv
    IS
    SELECT asp.segment1 supplier_ref,
    -- asp.vendor_name supplier_name,
    replace(asp.vendor_name, ',', ' ') supplier_name,
    --aia.invoice_num invoice_number,
    replace(aia.invoice_num, ',','') invoice_number,
    aia.invoice_date,
    aia.invoice_amount amount,
    aia.doc_sequence_value unique_id,
    aia.creation_date date_invoice_entered,
    apsa.due_date date_invoice_paid,
    aia.SOURCE user_id,
    aia.payment_status_flag,
    aia.invoice_type_lookup_code doc_type,
    --aia.description,
    replace(aia.description, ',' , ' ') description,
    apsa.gross_amount
    FROM ap_invoices_all aia,
    ap_suppliers asp,
    apps.ap_payment_schedules_all apsa
    -- apps.iby_payments_all iba,
    -- apps.iby_docs_payable_all dp
    WHERE aia.invoice_id = apsa.invoice_id
    AND aia.vendor_id = asp.vendor_id
    AND aia.org_id = apsa.org_id
    -- AND apsa.payment_status_flag != 'Y' -- commented for CR
    -- AND dp.payment_id = iba.payment_id(+)
    -- AND aia.invoice_id = dp.calling_app_doc_unique_ref2(+)
    -- AND apsa.due_date <= (SYSDATE + 1)
    AND TRUNC (aia.creation_date)
    BETWEEN NVL (fnd_date.canonical_to_date (p_start_date),
    TRUNC (aia.creation_date))
    AND NVL (fnd_date.canonical_to_date (p_end_date),
    TRUNC (aia.creation_date));
         TYPE xxc_tbl IS TABLE OF get_ap_data_inv%ROWTYPE;
    xxc_tbl1 xxc_tbl;
    BEGIN
    l_batch_id := apps_common_out_batch_id_s1.CURRVAL;
    xxc_common_int_pk.insert_audit (p_batch_id => l_batch_id,
    p_request_id => l_request_id,
    p_source_system => l_source,
    p_proc_name => l_proc_name,
    p_log_type => l_log_type,
    p_det_status => l_det_status_inprocess,
    p_msg_code => NULL,
    p_entity => NULL,
    p_msg_desc => 'Process Starts',
    p_mast_request_id => l_request_id,
    p_record_id => NULL,
    p_source => l_source,
    p_target => l_target,
    p_email => NULL,
    p_mod_code => l_mod_code,
    p_audit_master_id => l_audit_master_id
    -- Get Module Code
    BEGIN
    SELECT TRIM (fval.flex_value),
    TRIM (SUBSTR (fval.description,
    1,
    INSTR (fval.description, ' -')
    INTO l_source,
    l_mod_code
    FROM fnd_flex_values_vl fval, fnd_flex_value_sets vset
    WHERE vset.flex_value_set_id = fval.flex_value_set_id
    AND vset.flex_value_set_name IN ('XXC_COMM_INT_CONFIG')
    AND fval.enabled_flag = 'Y'
    AND fval.description = lc_module_description;
    EXCEPTION
    WHEN OTHERS
    THEN
    xxc_common_int_pk.insert_audit (p_batch_id => l_batch_id,
    p_request_id => l_request_id,
    p_source_system => l_source,
    p_proc_name => l_proc_name,
    p_log_type => l_log_type,
    p_det_status => l_det_status_err,
    p_msg_code => NULL,
    p_entity => NULL,
    p_msg_desc => 'Error Mode Code',
    p_mast_request_id => l_request_id,
    p_record_id => NULL,
    p_source => l_source,
    p_target => l_target,
    p_email => NULL,
    p_mod_code => l_mod_code,
    p_audit_master_id => l_audit_master_id
    raise_application_error (-20045, SQLERRM);
    END;
    --File Location Path for OutPut File
    BEGIN
    SELECT fnd_profile.VALUE ('XXC_MOD_IN_068_AP_OUTBOUND'),
    fnd_profile.VALUE ('XXC_MOD_IN_068_AP_ARCHIVE')
    INTO l_location,
    l_archive_location
    FROM DUAL;
    EXCEPTION
    WHEN OTHERS
    THEN
    xxc_common_int_pk.insert_audit
    (p_batch_id => l_batch_id,
    p_request_id => l_request_id,
    p_source_system => l_source,
    p_proc_name => l_proc_name,
    p_log_type => l_log_type,
    p_det_status => l_det_status_rejected,
    p_msg_code => NULL,
    p_entity => NULL,
    p_msg_desc => 'Profile Value not found',
    p_mast_request_id => l_request_id,
    p_record_id => NULL,
    p_source => l_source,
    p_target => l_target,
    p_email => NULL,
    p_mod_code => l_mod_code,
    p_audit_master_id => l_audit_master_id
    END;
    BEGIN
    SELECT TO_CHAR (SYSDATE, 'YYYYMMDDhh24miss')
    INTO l_date
    FROM DUAL;
    EXCEPTION
    WHEN OTHERS
    THEN
    xxc_common_int_pk.insert_audit (p_batch_id => l_batch_id,
    p_request_id => l_request_id,
    p_source_system => l_source,
    p_proc_name => l_proc_name,
    p_log_type => l_log_type,
    p_det_status => l_det_status_rejected,
    p_msg_code => NULL,
    p_entity => NULL,
    p_msg_desc => 'status not found',
    p_mast_request_id => l_request_id,
    p_record_id => NULL,
    p_source => l_source,
    p_target => l_target,
    p_email => NULL,
    p_mod_code => l_mod_code,
    p_audit_master_id => l_audit_master_id
    END;
    l_filename := 'AP_Fiscal_' || l_date || '.csv';
    v_file :=
    UTL_FILE.fopen (LOCATION => l_location,
    filename => l_filename,
    open_mode => l_open_mode,
    max_linesize => l_max_linesize
    -- Changed as per Sarah's email on 9th Decemeber
    /* UTL_FILE.put_line (v_file,
    'SUPPLIER_REF'
    || ','
    || 'SUPPLIER_NAME'
    || ','
    || 'INVOICE_NUMBER'
    || ','
    || 'INVOICE_DATE'
    || ','
    || 'AMOUNT'
    || ','
    || 'UNIQUE_ID'
    || ','
    || 'DATE_INVOICE_ENTERED'
    || ','
    || 'DATE_INVOICE_PAID'
    || ','
    || 'USER_ID'
    || ','
    || 'PAYMENT_STATUS_FLAG'
    || ','
    || 'DOC_TYPE'
    || ','
    || 'DESCRIPTION'
    || ','
    || 'PAYMENT_AMOUNT'
    UTL_FILE.put_line (v_file,
    'SUPPLIERREF'
    || ','
    || 'SUPPLIERNAME'
    || ','
    || 'INVOICENUMBER'
    || ','
    || 'DATE'
    || ','
    || 'AMOUNT'
    || ','
    || 'UNIQUEID'
    || ','
    || 'DATEINVOICEENTERED'
    || ','
    || 'DATEINVOICEPAID'
    || ','
    || 'USERID'
    || ','
    || 'PAYMENTSTATUS'
    || ','
    || 'DOCTYPE'
    || ','
    || 'DESCRIPTION'
    || ','
    || 'PAYMENTAMOUNT');
    UTL_FILE.put_line (v_file,
    'XX'
    || ','
    || 'XX'
    || ','
    || 'XX'
    || ','
    || 'XX'
    || ','
    || 'XX'
    || ','
    || 'XX'
    || ','
    || 'XX'
    || ','
    || 'XX'
    || ','
    || 'XX'
    || ','
    || 'XX'
    || ','
    || 'XX'
    || ','
    || 'XX'
    || ','
    || 'XX');
                             open get_ap_data_inv;
                             loop
                             fetch get_ap_data_inv bulk collect into xxc_tbl1 limit 6000;
    fnd_file.put_line(fnd_file.log, 'Cursor Count is : '||xxc_tbl1.count);
                             for i in xxc_tbl1.first .. xxc_tbl1.count
    --FOR cur_rec IN get_ap_data_inv
    LOOP
    BEGIN
    --Common package used for proper sequence for Record_id and Bath_id
    l_sucess_count := l_sucess_count + 1;
    --Insert into CSV file
    fnd_file.put_line (fnd_file.LOG, 'Before Utl file');
    UTL_FILE.put_line (v_file,
    xxc_tbl1(i).supplier_ref
    || ','
    || xxc_tbl1(i).supplier_name
    || ','
    || xxc_tbl1(i).invoice_number
    || ','
    || xxc_tbl1(i).invoice_date
    || ','
    || xxc_tbl1(i).amount
    || ','
    || xxc_tbl1(i).unique_id
    || ','
    || xxc_tbl1(i).date_invoice_entered
    || ','
    || xxc_tbl1(i).date_invoice_paid
    || ','
    || xxc_tbl1(i).user_id
    || ','
    || xxc_tbl1(i).payment_status_flag
    || ','
    || xxc_tbl1(i).doc_type
    || ','
    || xxc_tbl1(i).description
    || ','
    || xxc_tbl1(i).gross_amount);
    fnd_file.put_line (fnd_file.LOG,
    'Supplier Reference : ' || xxc_tbl1(i).supplier_ref);
    xxc_common_int_pk.insert_audit
    (p_batch_id => l_batch_id,
    p_request_id => l_request_id,
    p_source_system => l_source,
    p_proc_name => l_proc_name,
    p_log_type => l_log_type,
    p_det_status => l_det_status_complete,
    p_msg_code => NULL,
    p_entity => NULL,
    p_msg_desc => 'Inserting records from AP to Fiscal Successfully',
    p_mast_request_id => l_request_id,
    p_record_id => NULL,
    p_source => l_source,
    p_target => l_target,
    p_email => NULL,
    p_mod_code => l_mod_code,
    p_audit_master_id => l_audit_master_id
    EXCEPTION
    WHEN OTHERS
    THEN
    l_error_count := l_error_count + 1;
    fnd_file.put_line (fnd_file.LOG,
    'Error While Inserting from AP to Fiscal '
    || SQLERRM);
    -- Create audit log for AP Inv records insert Exception
    --Insert into the Audit table XXC_COMM_AUDIT_DETAIL_LOG and XXC_COMM_AUDIT_MASTER_LOG
    xxc_common_int_pk.insert_audit
    (p_batch_id => l_batch_id,
    p_request_id => l_request_id,
    p_source_system => l_source,
    p_proc_name => l_proc_name,
    p_log_type => l_log_type,
    p_det_status => l_det_status_rejected,
    p_msg_code => NULL,
    p_entity => NULL,
    p_msg_desc => 'Error While Inserting from AP to Fiscal',
    p_mast_request_id => l_request_id,
    p_record_id => NULL,
    p_source => l_source,
    p_target => l_target,
    p_email => NULL,
    p_mod_code => l_mod_code,
    p_audit_master_id => l_audit_master_id
    END;
    END LOOP;
    exit when get_ap_data_inv%NOTFOUND;
    end loop;
         close get_ap_data_inv;
    UTL_FILE.fclose (v_file);
    UTL_FILE.fcopy (l_location,
    l_filename,
    l_archive_location,
    l_filename
    -- Create audit log for Successfully processed records
    -- Procedure call to insert in Audit tables
    xxc_common_int_pk.insert_audit
    (p_batch_id => l_batch_id,
    p_request_id => l_request_id,
    p_source_system => l_source,
    p_proc_name => l_proc_name,
    p_log_type => l_log_type,
    p_det_status => l_det_status_complete,
    p_msg_code => NULL,
    p_entity => NULL,
    p_msg_desc => 'Compeleted Sucessfully AP to Fiscal',
    p_mast_request_id => l_request_id,
    p_record_id => NULL,
    p_source => l_source,
    p_target => l_target,
    p_email => NULL,
    p_mod_code => l_mod_code,
    p_audit_master_id => l_audit_master_id
    --Insert into the Audit table XXC_COMM_AUDIT_DETAIL_LOG and XXC_COMM_AUDIT_MASTER_LOG for populating email drop table
    BEGIN
    SELECT transaction_status
    INTO p_status
    FROM xxc_comm_audit_master_log
    WHERE audit_master_id = l_audit_master_id;
    EXCEPTION
    WHEN OTHERS
    THEN
    xxc_common_int_pk.insert_audit (p_batch_id => l_batch_id,
    p_request_id => l_request_id,
    p_source_system => l_source,
    p_proc_name => l_proc_name,
    p_log_type => l_log_type,
    p_det_status => l_det_status_err,
    p_msg_code => NULL,
    p_entity => NULL,
    p_msg_desc => 'Status Error',
    p_mast_request_id => l_request_id,
    p_record_id => NULL,
    p_source => l_source,
    p_target => l_target,
    p_email => NULL,
    p_mod_code => l_mod_code,
    p_audit_master_id => l_audit_master_id
    END;
    IF p_status <> 0
    THEN
    xxc_comm_audit_log_pk.populate_email_drop_table (l_audit_master_id,
    l_batch_id);
    END IF;
    EXCEPTION
    WHEN UTL_FILE.invalid_path
    THEN
    UTL_FILE.fclose (v_file);
    raise_application_error (-20000, 'File location is invalid.');
    WHEN UTL_FILE.invalid_mode
    THEN
    UTL_FILE.fclose (v_file);
    raise_application_error (-20001,
    'The open_mode parameter in FOPEN is invalid.');
    WHEN UTL_FILE.invalid_filehandle
    THEN
    UTL_FILE.fclose (v_file);
    raise_application_error (-20002, 'File handle is invalid.');
    WHEN UTL_FILE.invalid_operation
    THEN
    UTL_FILE.fclose (v_file);
    raise_application_error
    (-20003,
    'File could not be opened or operated on as requested.');
    WHEN UTL_FILE.write_error
    THEN
    UTL_FILE.fclose (v_file);
    raise_application_error
    (-20005,
    'Operating system error occurred during the write operation.');
    WHEN UTL_FILE.file_open
    THEN
    UTL_FILE.fclose (v_file);
    raise_application_error
    (-20008,
    'The requested operation failed because the file is open.');
    WHEN UTL_FILE.invalid_maxlinesize
    THEN
    UTL_FILE.fclose (v_file);
    raise_application_error
    (-20009,
    'The MAX_LINESIZE value for FOPEN() is invalid; it should '
    || 'be within the range 1 to 32767.');
    COMMIT;
    ROLLBACK TO data_extract;
    WHEN OTHERS
    THEN
    raise_application_error (-20045, SQLERRM);
    UTL_FILE.fclose (v_file);
    END xxc_mod_068_ap_pr;
    END xxc_mod_in_068_ap_to_fis_pkg;
    Show Errors
    Iam implemented BULK collect concept in programe,can anyone please suggest how can I imporve performance....
    Thanks,
    Rakesh

      CREATE OR REPLACE PACKAGE BODY "XXC"."XXC_MOD_IN_068_AP_TO_FIS_PKG"
    AS
      PROCEDURE xxc_mod_068_ap_pr (
        p_errbuf                         OUT      VARCHAR2,
        p_retcode                        OUT      NUMBER,
        p_start_date                     IN       VARCHAR2,
        p_end_date                       IN       VARCHAR2
      IS
        -- Define variables and assign default values
        l_sucess_count                          NUMBER := 0;
        l_error_count                           NUMBER := 0;
        -- Standard declaration
        l_source                                VARCHAR2 (10);
        l_target                                VARCHAR2 (10);
        lc_module_description                   VARCHAR2 (50)
                                                     := 'MOD_IN_068 - AP to Fiscal';
        l_status                       CONSTANT VARCHAR2 (50) := 'NEW';
        p_status                                NUMBER;
        l_batch_id                              NUMBER;
        l_batch_id_next                         NUMBER
                                             := apps_common_out_batch_id_s1.NEXTVAL;
        l_proc_name                             VARCHAR2 (100) := 'XXC_MOD_IN_068';
        l_request_id                            NUMBER
                                                      := fnd_global.conc_request_id;
        l_audit_master_id                       NUMBER := NULL;
        l_mod_code                              VARCHAR2 (100);
        l_log_type                              NUMBER := 1;   --INFORMATION
        l_det_status_success                    NUMBER := 0;   --SUCCESS
        l_det_status_inprocess                  NUMBER := 3;   --INPROCESS
        l_det_status_rejected                   NUMBER := 4;   --REJECTED
        l_det_status_err                        NUMBER := 3;   --Error
        l_det_status_complete                   NUMBER := 9;   --COMPLETE
        -- Standard who Columns
        l_created_by                            NUMBER := fnd_global.user_id;
        l_creation_date                         DATE := SYSDATE;
        l_last_update_date                      DATE := SYSDATE;
        l_last_update_login                     NUMBER := fnd_global.user_id;
        v_file                                  UTL_FILE.file_type;
        l_location                              VARCHAR2 (150);
        l_archive_location                      VARCHAR2 (150);
        l_date                                  VARCHAR2 (50);
        l_filename                              VARCHAR2 (50);
        l_open_mode                             VARCHAR2 (1) := 'W';
    --- l_max_linesize                          NUMBER := 32767;
        l_max_linesize                          VARCHAR2 (150); -- Updated 09-Nov-2012
        --Cursor is used to fetch valid records for the interface
        CURSOR get_ap_data_inv
        IS
          SELECT       asp.segment1 supplier_ref,
                 -- asp.vendor_name supplier_name,
                 replace(asp.vendor_name, ',', ' ') supplier_name,
                 --aia.invoice_num invoice_number,
                 replace(aia.invoice_num, ',','') invoice_number,
                 aia.invoice_date,
                 aia.invoice_amount amount,
                 aia.doc_sequence_value unique_id,
                 aia.creation_date date_invoice_entered,
                 apsa.due_date date_invoice_paid,
                 aia.SOURCE user_id,
                 aia.payment_status_flag,
                 aia.invoice_type_lookup_code doc_type,
                 --aia.description,
                 replace(aia.description, ',' , ' ') description,
                 apsa.gross_amount
          FROM   ap_invoices_all aia,
                 ap_suppliers asp,
                 apps.ap_payment_schedules_all apsa
                -- apps.iby_payments_all iba,
            --     apps.iby_docs_payable_all dp
          WHERE  aia.invoice_id = apsa.invoice_id
          AND    aia.vendor_id  = asp.vendor_id
          AND    aia.org_id     = apsa.org_id
      --  AND    apsa.payment_status_flag != 'Y'   -- commented for CR
      --  AND    dp.payment_id = iba.payment_id(+)
      --  AND    aia.invoice_id = dp.calling_app_doc_unique_ref2(+)
      --  AND    apsa.due_date <= (SYSDATE + 1)
          AND    TRUNC (aia.creation_date)
                   BETWEEN NVL (fnd_date.canonical_to_date (p_start_date),
                                TRUNC (aia.creation_date))
                       AND NVL (fnd_date.canonical_to_date (p_end_date),
                                TRUNC (aia.creation_date));
                                     TYPE xxc_tbl IS TABLE OF get_ap_data_inv%ROWTYPE;
                                  xxc_tbl1 xxc_tbl;
      BEGIN
        l_batch_id                      := apps_common_out_batch_id_s1.CURRVAL;
        xxc_common_int_pk.insert_audit (p_batch_id                        => l_batch_id,
                                        p_request_id                      => l_request_id,
                                        p_source_system                   => l_source,
                                        p_proc_name                       => l_proc_name,
                                        p_log_type                        => l_log_type,
                                        p_det_status                      => l_det_status_inprocess,
                                        p_msg_code                        => NULL,
                                        p_entity                          => NULL,
                                        p_msg_desc                        => 'Process Starts',
                                        p_mast_request_id                 => l_request_id,
                                        p_record_id                       => NULL,
                                        p_source                          => l_source,
                                        p_target                          => l_target,
                                        p_email                           => NULL,
                                        p_mod_code                        => l_mod_code,
                                        p_audit_master_id                 => l_audit_master_id
    -- Get Module Code
        BEGIN
          SELECT TRIM (fval.flex_value),
                 TRIM (SUBSTR (fval.description,
                               1,
                               INSTR (fval.description, ' -')
          INTO   l_source,
                 l_mod_code
          FROM   fnd_flex_values_vl fval, fnd_flex_value_sets vset
          WHERE  vset.flex_value_set_id = fval.flex_value_set_id
          AND    vset.flex_value_set_name IN ('XXC_COMM_INT_CONFIG')
          AND    fval.enabled_flag = 'Y'
          AND    fval.description = lc_module_description;
        EXCEPTION
          WHEN OTHERS
          THEN
            xxc_common_int_pk.insert_audit (p_batch_id                        => l_batch_id,
                                            p_request_id                      => l_request_id,
                                            p_source_system                   => l_source,
                                            p_proc_name                       => l_proc_name,
                                            p_log_type                        => l_log_type,
                                            p_det_status                      => l_det_status_err,
                                            p_msg_code                        => NULL,
                                            p_entity                          => NULL,
                                            p_msg_desc                        => 'Error Mode Code',
                                            p_mast_request_id                 => l_request_id,
                                            p_record_id                       => NULL,
                                            p_source                          => l_source,
                                            p_target                          => l_target,
                                            p_email                           => NULL,
                                            p_mod_code                        => l_mod_code,
                                            p_audit_master_id                 => l_audit_master_id
            raise_application_error (-20045, SQLERRM);
        END;
    --File Location Path for OutPut File
        BEGIN
          SELECT fnd_profile.VALUE ('XXC_MOD_IN_068_AP_OUTBOUND'),
                 fnd_profile.VALUE ('XXC_MOD_IN_068_AP_ARCHIVE')
          INTO   l_location,
                 l_archive_location
          FROM   DUAL;
        EXCEPTION
          WHEN OTHERS
          THEN
            xxc_common_int_pk.insert_audit
                                          (p_batch_id                        => l_batch_id,
                                           p_request_id                      => l_request_id,
                                           p_source_system                   => l_source,
                                           p_proc_name                       => l_proc_name,
                                           p_log_type                        => l_log_type,
                                           p_det_status                      => l_det_status_rejected,
                                           p_msg_code                        => NULL,
                                           p_entity                          => NULL,
                                           p_msg_desc                        => 'Profile Value not found',
                                           p_mast_request_id                 => l_request_id,
                                           p_record_id                       => NULL,
                                           p_source                          => l_source,
                                           p_target                          => l_target,
                                           p_email                           => NULL,
                                           p_mod_code                        => l_mod_code,
                                           p_audit_master_id                 => l_audit_master_id
        END;
        BEGIN
          SELECT TO_CHAR (SYSDATE, 'YYYYMMDDhh24miss')
          INTO   l_date
          FROM   DUAL;
        EXCEPTION
          WHEN OTHERS
          THEN
            xxc_common_int_pk.insert_audit (p_batch_id                        => l_batch_id,
                                            p_request_id                      => l_request_id,
                                            p_source_system                   => l_source,
                                            p_proc_name                       => l_proc_name,
                                            p_log_type                        => l_log_type,
                                            p_det_status                      => l_det_status_rejected,
                                            p_msg_code                        => NULL,
                                            p_entity                          => NULL,
                                            p_msg_desc                        => 'status not found',
                                            p_mast_request_id                 => l_request_id,
                                            p_record_id                       => NULL,
                                            p_source                          => l_source,
                                            p_target                          => l_target,
                                            p_email                           => NULL,
                                            p_mod_code                        => l_mod_code,
                                            p_audit_master_id                 => l_audit_master_id
        END;
        l_filename                      := 'AP_Fiscal_' || l_date || '.csv';
        v_file                          :=
          UTL_FILE.fopen (LOCATION                          => l_location,
                          filename                          => l_filename,
                          open_mode                         => l_open_mode,
                          max_linesize                      => l_max_linesize
                           -- Changed as per Sarah's email on 9th Decemeber
        /* UTL_FILE.put_line (v_file,
                               'SUPPLIER_REF'
                            || ','
                            || 'SUPPLIER_NAME'
                            || ','
                            || 'INVOICE_NUMBER'
                            || ','
                            || 'INVOICE_DATE'
                            || ','
                            || 'AMOUNT'
                            || ','
                            || 'UNIQUE_ID'
                            || ','
                            || 'DATE_INVOICE_ENTERED'
                            || ','
                            || 'DATE_INVOICE_PAID'
                            || ','
                            || 'USER_ID'
                            || ','
                            || 'PAYMENT_STATUS_FLAG'
                            || ','
                            || 'DOC_TYPE'
                            || ','
                            || 'DESCRIPTION'
                            || ','
                            || 'PAYMENT_AMOUNT'
        UTL_FILE.put_line (v_file,
                              'SUPPLIERREF'
                           || ','
                           || 'SUPPLIERNAME'
                           || ','
                           || 'INVOICENUMBER'
                           || ','
                           || 'DATE'
                           || ','
                           || 'AMOUNT'
                           || ','
                           || 'UNIQUEID'
                           || ','
                           || 'DATEINVOICEENTERED'
                           || ','
                           || 'DATEINVOICEPAID'
                           || ','
                           || 'USERID'
                           || ','
                           || 'PAYMENTSTATUS'
                           || ','
                           || 'DOCTYPE'
                           || ','
                           || 'DESCRIPTION'
                           || ','
                           || 'PAYMENTAMOUNT');
        UTL_FILE.put_line (v_file,
                              'XX'
                           || ','
                           || 'XX'
                           || ','
                           || 'XX'
                           || ','
                           || 'XX'
                           || ','
                           || 'XX'
                           || ','
                           || 'XX'
                           || ','
                           || 'XX'
                           || ','
                           || 'XX'
                           || ','
                           || 'XX'
                           || ','
                           || 'XX'
                           || ','
                           || 'XX'
                           || ','
                           || 'XX'
                           || ','
                           || 'XX');
                                open get_ap_data_inv;
                                loop
                                fetch get_ap_data_inv bulk collect into xxc_tbl1 limit 6000;
                 fnd_file.put_line(fnd_file.log, 'Cursor Count is : '||xxc_tbl1.count);
                                for i in xxc_tbl1.first .. xxc_tbl1.count
        --FOR cur_rec IN get_ap_data_inv
        LOOP
          BEGIN
            --Common package used for proper sequence for Record_id and Bath_id
            l_sucess_count                  := l_sucess_count + 1;
            --Insert into CSV file
            fnd_file.put_line (fnd_file.LOG, 'Before Utl file');
            UTL_FILE.put_line (v_file,
                                  xxc_tbl1(i).supplier_ref
                               || ','
                               || xxc_tbl1(i).supplier_name
                               || ','
                               || xxc_tbl1(i).invoice_number
                               || ','
                               || xxc_tbl1(i).invoice_date
                               || ','
                               || xxc_tbl1(i).amount
                               || ','
                               || xxc_tbl1(i).unique_id
                               || ','
                               ||  xxc_tbl1(i).date_invoice_entered
                               || ','
                               ||  xxc_tbl1(i).date_invoice_paid
                               || ','
                               ||  xxc_tbl1(i).user_id
                               || ','
                               ||  xxc_tbl1(i).payment_status_flag
                               || ','
                               ||  xxc_tbl1(i).doc_type
                               || ','
                               ||  xxc_tbl1(i).description
                               || ','
                               ||  xxc_tbl1(i).gross_amount);
            fnd_file.put_line (fnd_file.LOG,
                               'Supplier Reference : ' ||  xxc_tbl1(i).supplier_ref);
            xxc_common_int_pk.insert_audit
                  (p_batch_id                        => l_batch_id,
                   p_request_id                      => l_request_id,
                   p_source_system                   => l_source,
                   p_proc_name                       => l_proc_name,
                   p_log_type                        => l_log_type,
                   p_det_status                      => l_det_status_complete,
                   p_msg_code                        => NULL,
                   p_entity                          => NULL,
                   p_msg_desc                        => 'Inserting records from AP to Fiscal Successfully',
                   p_mast_request_id                 => l_request_id,
                   p_record_id                       => NULL,
                   p_source                          => l_source,
                   p_target                          => l_target,
                   p_email                           => NULL,
                   p_mod_code                        => l_mod_code,
                   p_audit_master_id                 => l_audit_master_id
          EXCEPTION
            WHEN OTHERS
            THEN
              l_error_count                   := l_error_count + 1;
              fnd_file.put_line (fnd_file.LOG,
                                    'Error While Inserting from AP to Fiscal '
                                 || SQLERRM);
                 -- Create audit log for AP Inv records insert Exception
              --Insert into the Audit table XXC_COMM_AUDIT_DETAIL_LOG and XXC_COMM_AUDIT_MASTER_LOG
              xxc_common_int_pk.insert_audit
                           (p_batch_id                        => l_batch_id,
                            p_request_id                      => l_request_id,
                            p_source_system                   => l_source,
                            p_proc_name                       => l_proc_name,
                            p_log_type                        => l_log_type,
                            p_det_status                      => l_det_status_rejected,
                            p_msg_code                        => NULL,
                            p_entity                          => NULL,
                            p_msg_desc                        => 'Error While Inserting from AP to Fiscal',
                            p_mast_request_id                 => l_request_id,
                            p_record_id                       => NULL,
                            p_source                          => l_source,
                            p_target                          => l_target,
                            p_email                           => NULL,
                            p_mod_code                        => l_mod_code,
                            p_audit_master_id                 => l_audit_master_id
          END;
        END LOOP;
         exit when get_ap_data_inv%NOTFOUND;
        end loop;
         close get_ap_data_inv;
        UTL_FILE.fclose (v_file);
        UTL_FILE.fcopy (l_location,
                        l_filename,
                        l_archive_location,
                        l_filename
          -- Create audit log for Successfully processed records
        -- Procedure call to insert in Audit tables
        xxc_common_int_pk.insert_audit
                               (p_batch_id                        => l_batch_id,
                                p_request_id                      => l_request_id,
                                p_source_system                   => l_source,
                                p_proc_name                       => l_proc_name,
                                p_log_type                        => l_log_type,
                                p_det_status                      => l_det_status_complete,
                                p_msg_code                        => NULL,
                                p_entity                          => NULL,
                                p_msg_desc                        => 'Compeleted Sucessfully AP to Fiscal',
                                p_mast_request_id                 => l_request_id,
                                p_record_id                       => NULL,
                                p_source                          => l_source,
                                p_target                          => l_target,
                                p_email                           => NULL,
                                p_mod_code                        => l_mod_code,
                                p_audit_master_id                 => l_audit_master_id
        --Insert into the Audit table XXC_COMM_AUDIT_DETAIL_LOG and XXC_COMM_AUDIT_MASTER_LOG for populating email drop table
        BEGIN
          SELECT transaction_status
          INTO   p_status
          FROM   xxc_comm_audit_master_log
          WHERE  audit_master_id = l_audit_master_id;
        EXCEPTION
          WHEN OTHERS
          THEN
            xxc_common_int_pk.insert_audit (p_batch_id                        => l_batch_id,
                                            p_request_id                      => l_request_id,
                                            p_source_system                   => l_source,
                                            p_proc_name                       => l_proc_name,
                                            p_log_type                        => l_log_type,
                                            p_det_status                      => l_det_status_err,
                                            p_msg_code                        => NULL,
                                            p_entity                          => NULL,
                                            p_msg_desc                        => 'Status Error',
                                            p_mast_request_id                 => l_request_id,
                                            p_record_id                       => NULL,
                                            p_source                          => l_source,
                                            p_target                          => l_target,
                                            p_email                           => NULL,
                                            p_mod_code                        => l_mod_code,
                                            p_audit_master_id                 => l_audit_master_id
        END;
        IF p_status <> 0
        THEN
          xxc_comm_audit_log_pk.populate_email_drop_table (l_audit_master_id,
                                                           l_batch_id);
        END IF;
      EXCEPTION
        WHEN UTL_FILE.invalid_path
        THEN
          UTL_FILE.fclose (v_file);
          raise_application_error (-20000, 'File location is invalid.');
        WHEN UTL_FILE.invalid_mode
        THEN
          UTL_FILE.fclose (v_file);
          raise_application_error (-20001,
                                   'The open_mode parameter in FOPEN is invalid.');
        WHEN UTL_FILE.invalid_filehandle
        THEN
          UTL_FILE.fclose (v_file);
          raise_application_error (-20002, 'File handle is invalid.');
        WHEN UTL_FILE.invalid_operation
        THEN
          UTL_FILE.fclose (v_file);
          raise_application_error
                           (-20003,
                            'File could not be opened or operated on as requested.');
        WHEN UTL_FILE.write_error
        THEN
          UTL_FILE.fclose (v_file);
          raise_application_error
                     (-20005,
                      'Operating system error occurred during the write operation.');
        WHEN UTL_FILE.file_open
        THEN
          UTL_FILE.fclose (v_file);
          raise_application_error
                        (-20008,
                         'The requested operation failed because the file is open.');
        WHEN UTL_FILE.invalid_maxlinesize
        THEN
          UTL_FILE.fclose (v_file);
          raise_application_error
                    (-20009,
                        'The MAX_LINESIZE value for FOPEN() is invalid; it should '
                     || 'be within the range 1 to 32767.');
          COMMIT;
          ROLLBACK TO data_extract;
        WHEN OTHERS
        THEN
          raise_application_error (-20045, SQLERRM);
          UTL_FILE.fclose (v_file);
      END xxc_mod_068_ap_pr;
    END xxc_mod_in_068_ap_to_fis_pkg;Please verify...

  • Related to PL/Sql table

    Is there is any way to use DML statement in PL/Sql table? Can I use select command on associative arrays or plsql tables.

    Check with Bulk collection concept ?
    I am not sure DML operation is not possible , because it is just ARRAY stores on your session only , You can delete one Index value or Add or Manuipulate , but no significance with Database.
    There are some properties with BULK COLLECTION on PL/SQL table that you can populate data to Database table

  • How to update a table that has  Million Records

    Hi,
    Lets consider the basic EMP table and lets assume that it has around 20 Million Records . we need to have an update statement.Normal UPdate statement may hang the system or it may take a lot of time.
    The basic or Normal update statement goes like this and hope it may not work.
    update emp set hiredate = sysdate where comm is null and hiredate is null;Basic statement may not work. sugestions Needed.
    Regards,
    Vinesh

    sri wrote:
    I heard Bulk collect will resolve these type of issues and i am really poor at Bulk Collect concepts.Exactly what type of issue are you concerned with? The business requirements here are pretty important-- what problem is the UPDATE causing, specifically, that you are trying to work around.
    so looking for a solution to the problem using Bulk Collect .Without knowing the problem, it's very tough to suggest a solution. If you process data in batches using BULK COLLECT, your UPDATE statement will take longer to run and will consume more resources on the database. If the problem you are trying to solve is that your UPDATE is not fast enough, this is a poor approach.
    On the other hand, if you process data in batches, and do interim commits, you can probably hold locks on individual rows for a shorter amount of time. That would only be a concern, though, if you have some other process that is trying to update the same rows that you are updating at the same time that you're updating them, which is pretty rare. And breaking your update into multiple transactions introduces a whole bunch of complexity. You now have to write a bunch of code to ensure that your process is restartable should the update fail mid-way through leaving some number of updates committed and some number rolled back. You have to have a very detailed understanding of the data and data consistency to ensure that breaking up the transaction isn't going to negatively impact any process, report, etc. To do it correctly is a pile of work and then it's something that is constantly at risk of creating problems in the future when requirements change.
    In the vast majority of cases, you're better off issuing a simple SQL statement during a time when the system isn't particularly busy.
    Justin

  • What are collections in oracle plsql, and Transpose concepts.

    Hi OTN,
    what are the collections available in Oracle Plsql, what are concepts of collection.
    How to Transpose a Table from rows to columns or columns into rows.
    DDL and DML concepts.
    What is the concepts of statistics in Oracle Plsql.
    Thanks
    Edited by: 945059 on Aug 22, 2012 4:52 AM

    945059 wrote:
    Hi OTN,
    what are the collections available in Oracle Plsql, what are concepts of collection.
    How to Transpose a Table from rows to columns or columns into rows.
    DDL and DML concepts.
    What is the concepts of statistics in Oracle Plsql.
    Thanks
    Edited by: 945059 on Aug 22, 2012 4:52 AMhttp://www.google.co.in/search?hl=en-IN&source=hp&q=collections+oracle&gbv=2&oq=collections+oracle&gs_l=heirloom-hp.3..0l4j0i30l6.2031.5874.0.6561.18.17.0.0.0.0.422.3217.2-4j4j2.10.0...0.0...1c.l6qRfaAtkWM&safe=active
    SQL and PL/SQL FAQ
    http://www.google.co.in/search?q=performance+tuning+oracle&hl=en-IN&gbv=2&gs_l=heirloom-hp.3..0l4j0i30l6.2031.5874.0.6561.18.17.0.0.0.0.422.3217.2-4j4j2.10.0...0.0...1c.l6qRfaAtkWM&safe=active&oq=performance+tuning+oracle

  • Concept with collection

    why static objects and enum not allowed in collection.????

    "static object" is an oxymoron.
    There are collections built precisely for enums.
    And you can add enum objects to regular collections as well.
    What are you having trouble with, exactly?

  • How to display data collected in main vi to indicators in another vi

    Hi,
    I am collecting data using NI 6251 USB DAQ
    in the main vi but as i have too many controls and indicators on the
    main vi front panel. so i want to display the indicators(graphs) in another vi. i also
    want the vi with the graphs to open automatically. Does any one know how
    i can do this? I would
    really appreciate any help.
    Thanks,
     ygupta
    Solved!
    Go to Solution.

    Hi,
    Search forum for the sub vi concept.
    For your reference i have attached a example.
    you can see procedure for the same on the net.
    regards,
    Shrek
    Attachments:
    graph.zip ‏11 KB

  • Basic Java Concepts

    I'm a Java novice, trying to learn it along with Jdeveloper side by side. My learning of the Java fundamental concepts led to the below understanding, please see if my understanding is not correct in any way.
    The fundamental concept with Java is a CLASS, whose feature are its state and behaviour. The state of the class is stored in the definition of the class itself via ATTRIBUTES or in lay man's language VARIABLES. These attributes can be static, public, private or protectd.
    The behaviour of a class is stored via METHODS within the definition of a class. METHOD is nothing but a block of code performaing a certain action.
    A good example of a CLASS's state a behaviour can be a stock. A stocks state is available via its ticker symbol, price of the stock, and the date i.e. on a given date, a given stock has a particular price. So there are 3 attributes.
    Now METHOD in the context of the above example is a means to capture the ever changing state of the above 3 attributes.
    In short attributes or fields ( defined via declaration of variables inside the class) capture the state of an object, where as its interaction with the world external to the object captured by METHOD.
    These 3 attributes are common to thousands of stock's in the outside market, so a common class called STOCK can be created to capture the state and behaviour of thousands of stocks. The same class can be called at the same time to capture the behaviour of N number of stocks. When a class is called as explained, each such call is called an INSTANCE of the CLASS. An OBJECT is an instance of SUCH a class.
    Similar to CLASS is INTERFACE. A given class can only call the attributes and methods from one another class. If a class needs to inherit from more than one another class then it is accomplished via an INTERFACE. An Interface contains only the spec of the methods from other classes and not the entire piece of code for he method itself. The methods that are declared in the interface are implemented in the classes to which they belong to.
    A PACKAGE in turn is a collected of CLASSES and INTERFACES. A PACKAGE helps in keeping the code oraganized and grouped by the functionaliy it delivers.
    A Class can in turn be either a SUPERCLASS or a SUBCLASS. In our given example CLASS, there are some stocks which offer OPTIONS and some which do not. In order to cover that behaviours we will like to create sub class called STOCSKWITHOPTIONS, which will then refer to STOCK class to inherit the attributes and methods from that class. In this case STOCK is the SUPERCLASS, and STOCKOPTIONS is the SUBCLASS.
    Thanks in advance

    Nagarjuna,
    there is an excellent tutorial series from Sun for basic and advanced Java features. It contains a lot of examples and explains every concept. You even download the tutorials.
    See http://java.sun.com/javase/reference/tutorials.jsp
    --olaf                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • How do I perform a trigger that collect the data for every rising edge continuously and then automatically put the data in a .xls file??

    I need to collect the data for every rising edge a trigger perfoms. So far I could collect the data but it seems that it only collect the data in the start of triggering, but not continuously. I also want to put the data in an excel spreadsheet and automatically add new set of data when the next rising edge occur. Please help.
    thanks a lot.

    LabWindows/CVI actually ships with a comprehensive set of examples for just about every area of programming you can use it in, including triggered analog data acquisition and ActiveX control of Microsoft Excel for data logging. Go to the following two directories on your computer to find respective examples for the two areas you are inquiring about:
    1) C:\MeasurementStudio\CVI\samples\DAQ\Ai\DAQsingleBufExtTrig.PRJ
    2) C:\MeasurementStudio\CVI\samples\activex\excel\excel2000dem.prj
    Just make sure to study the examples carefully so that you fully understand the processes followed for triggered analog acquisition and the process of launching an ActiveX automation server for control, and then you should be able to merge the concepts shown in both of the example
    s to make the application you desire.
    Jason F.
    Applications Engineer
    National Instruments
    www.ni.com/ask

  • Concept of use.

    Hello,
    Let's say I have two queues one is for Queries, second for Updates, and I want to simulate workload balance algorithm with following steps:
    {Query} is loaded from CSV,analyzed and converted to {Query,ClassifiedSpeed} with SVM classifier.
    {Update} is loaded from CSV, analyzed and also classified to {Update,SomeParam} but without SVM.
    I'm aggregating {Query,ClassifiedSpeed} by ClassifiedSpeed value in range 30 rows, mayby range unbaunded...
    I'm updating order of {Update,SomeParam} by SomeParam, just to optimize update for single table in SQL
    Now I want to pick row with update or query by some rules, execute it on database ( inside Bean ) and when it's {Query} i want to
    compare {ClassifiedSpeed} with real execution time, that's why I need to communicate with Classifier bean once again.
    Anyway I'm a bit lost with concept of that application.
    I know how to create almost every step on that list, but I'm not sure how control channels and processors.
    For example: I have Queries A, B, C, A, C, C, D ( timeline -> )
    That gives me input channel ( grouped and counted set, ordered by Count )
    {Query,Count,ClassifiedSpeed}
    C, 3, Fast
    A, 2, Slow
    B, 1, Fast
    D, 1, Slow
    Now i get updates which are only ordered by some extra param:
    {Updatem, SomeParam}
    U1, TABLE_FOO
    U3, TABLE_FOO
    U2, TABLE_XXX
    the thing is that when I connect both streams into one bean via processors, collect length of queries for statistics, and retrain
    SVM if percent of classified event's is lower then expected. So I need to be able to say to processor of aggregates Queries:
    Give me best aggregated row, the same to Update: Give me set of updates ( list of events in input here, I know how to handle that ),
    but CEP application is based on evens starting from flow order. I need to have working buffers which should be able to give me some
    data only when I want.
    What Is also important for me: I need to collect "Quality of Data" it's relation between on timestamp and correlation of single rows in
    both queues. It's like: Give me number of rows starting from timestamp of Single Query, which are older and affects the same table'
    I'm not sure how can I count it when I aggregate queries for processing.
    Some extra quesion: Is there possibilty to aggregate ids of queries in CQL? I know that I can do that type of things in SQL (eg. mySQL GROUP_CONCAT )
    From data :
    101, AAA
    102, BBB
    103, CCC
    104, AAA
    105, AAA
    106, CCC
    it's possibile to get two columns, where "|" is just separator of ids in single string parameter
    AAA,101|104|105
    BBB,102
    CCC,103|106
    Bye.

    Ok. I'm one step closer to understand how can use CEP. I spent 15 minutes on reading 12th chapter ( it's 4.30 AM ;) ) and I think I know how to store results but it still seems to be a bit mad solution for me.
    Let's go back to example, which is closer to my task :
    SELECT Query, QueryHashCode, QueryOrderNumberInStream, COUNT( QueryHashCode ) AS CountOfDuplictesInQueue
    FROM Stream[RANGE 20.../ still not sure/ ]
    GROUP BY QueryHashCode,Query, QueryOrderNumberInStream
    ORDER BY CountOfDuplictesInQueue DESC, QueryOrderNumberInStream ASC;
    .. bean processing.
    Classification here of before first select.
    Query,
    QueryHashCode,
    QueryPredictedSpeed ( 1 - 3 ),
    QueryLength ( 0 - 5000 ),
    CountOfDuplictesInQueue ( 0 - 1000 )
    Data :
    Query = "SELECT * FROM foo ";
    QueryHashCode = 312321; //. Query.hashCode();
    QueryPredictedSpeed = 3;
    QueryLength =18;
    CountOfDuplictesInQueue=2
    Now I'll use processor to count something similar to :
    SELECT Query, ( QueryPredictedSpeed /CountOfDuplictesInQueue + 0.001*QueryLength) AS some_order
    FROM foo [ .. ROW 1 ]
    and here is new issue :
    When I put it into cache I'll have to define timeout etc. and keep just one row in cache because new rows can modify order ( COUNT () )
    so it's a bit sick stuff for me to build few components structure for one row?
    1. When I Group few rows in CQL are they going to be removed from stream? I guess Yes.
    2. I think that processor will input data into stream in loop so it's also doesn't make sens when we are overwriting row which is not processed.
    3. Cleaning cache each time is madness for me ;)
    R.

  • Trying to understand the basic concept of object oriented programming.

    I am trying to understand the basic concept of object oriented programming.
    Object - a region of storage that define is defined by both state/behavior.
    ( An object is the actual thing that behavior affects.)
    State - Represented by a set of variables and the values they contain.
    (Is the location or movement or action that is the goal that the behavior is trying to accomplish.)
    Variables- (What does this mean?)
    Value - (What does this mean?)
    Behavior - Represented by a set of methods and the logic they implement.
    ( A set of methods that is built up to tell's the how object to change it's state. )
    Methods - A procedure that is executed when an object receives a message.
    ( A very basic comand.For example the method tells the object to move up, another method tells the method to go left. Thus making the object move up/left that combination is the behavior.)
    Class - A template from which the objects are created.
    ( I am very confused on what classes are.)
    - The definitions of the words I obtained from the "Osborne Teach Yourself Java". The () statements are how I interperate the Mechanisms (I do not know if Thats what you call them.) interact with each other. I understand my interpretation may be horribly wrong. I will incredibly appreciate all the support I may get from you.
    Thank you

    Object oriented programming is a replacement for the older idea of procedural programming (you can research procedural programming in google). As I understand it, in procedural programming, you have a step by step set of function calls to accomplish some task. Each function receives a data structure, manipulates it, and passes it to the next function. The problem with this is that each function preforms some action for the overall task and can't easily be reused by some other task. Its also harder to read the flow of what is happening with raw data structures flying all over the place.
    In object oriented programming, an object calls a function of another object and receives back, not a data structure, but another object. Objects contain a data structure that can only be accessed by its functions. An object is not so much a sub component of a bigger task, as it is a service that any other task can use for any purpose. Also, when you pass an object to the caller, the caller can ask questions about the data structure via its functions. The developer doesnt have to know what the previous function did to the data by reading up on any documentation, or having to reverse engineer the code.
    I suggest the best way of learning this is to code something like a library object.
    A library object contains a collection of book objects
    A book object contains a collection of chapter objects
    A chapter object contains a collection of paragraph objects
    A paragraph object contains a collection of sentence objects
    A sentence object contains a collection of word objects.
    Add functions to each object to provide a service
    Example: A library object should have a:
    public void addBook(Book book)
    public Book getBook(String title)
    public boolean isBookInLibrary(String title)
    The key is to add functions to provide a service to anyone who uses your object(s)
    For example, what functions (service) should a paragraph object provide?
    It shouldn't provide a function that tells how many words there are in a sentence. That function belongs to a sentence object.
    Lets say you want to add a new chapter to a book. The task is easy to read
    if you write your objects well:
    Sentence sentence1=new Sentence("It was a dark and stormy night");
    Sentence sentence2=new Sentence("Suddenly, a shot ran out");
    Paragraph paragraph=new Paragraph();
    paragraph.addSentence(sentence1);
    paragraph.addSentence(sentence2);
    Paragraphs paragraphs=new Paragraphs();
    paragraphs.addParagraph(paragraph);
    Library library= new Library();
    library.getBook("My Novel").addChapter("Chapter 1",paragraphs).
    Now, lets say you want to have a word count for the entire book.
    The book should ask each chapter how many words it contains.
    Each chapter should ask its paragraphs, each paragraph should ask
    its sentences. The total of words should ripple up and be tallied at each
    stage until it reaches the book. The book can then report the total.
    Only the sentence object actually counts words. The other objects just tallies the counts.
    Now, where would you assign a librarian? What object(s) and functions would you provide?
    If written well, the project is easily extensible.

  • PNP concept

    i want to know the concept of PNP logical database (SAP HR module) supported by an example program.
    Also, could someone explain what <u>get pernr.</u> event does and the significance of specifying <u>tables : pernr</u>   in PNP logical database program.
    Also, how is provide end-provide different from select end select.
    answers will be rewarded.

    Hi Soumali,
    welcome to SDN forum.
    PNP logical data base conrtain various definitions related to HR employee selection data.
    For details on it goto SE36 And give PNP.
    Get Pernr actuall collects all the data based on the selection screen into the mentioned infotypes in the program.
    For more reference you may check out this program - RPLADDJ0, RPLICO10, etc.
    Regards,
    Amit

Maybe you are looking for

  • NetWeaver AS ABAP 7.4 Developer Edition: SAP Server Not Responding

    Hello, im using the developer edition of AS ABAP 7.4 of CAL. When I connect (via Remotedesktop) and starting SAPGui or Eclipse ADT, I got the error message "partner ... not reached" (Error No. 10061). Any idea how to solve this issue? I tried already

  • Adobe 9 Pro stopped working

    I have not been able to get any answer from Adobe. I have a registered copy of Adobe 9 Pro. All of a sudden when I try to open a document it says "You cannot use this product at this time. You must repair this problem  by unistalling and then reinsta

  • Hi, No camera at all after updating iPhone4s to 5.1.1

    Hi, after yesterday update to 5.1.1 without error there is no camera short cut in my phone anymore, and if I open a camera app it cant work. it seems there is no camera at all. let me know how I can solve the problem.

  • What time does adobe creative cloud auto update

    what time does adobe creative cloud auto update

  • Unable to Use Garageband

    I've never used Garageband, but when I got an iPhone, I thought it would be fun to create some ringtones. The videos on Youtube made it look simple. So, I opened up Garageband for the first time since getting my mac pro. Well, it's just impossible to