Using the slider for and BULK COLLECT INTO

Hi all
in this case we prefer to use the cursor AND the cursor with the LOOSE COLLECTION? The following contains two block this same query where used FOR the slider, the other is using COLLECT LOOSE. The task that is running better given in the existing? How do we measure performance between these two?

I use the example of HR schema:
declare
l_start number;
BEGIN
l_start:= DBMS_UTILITY.get_time;
dbms_lock.sleep(1);
FOR employee IN (SELECT e.last_name, j.job_title FROM employees e,jobs j 
where e.job_id=j.job_id and  e.job_id LIKE '%CLERK%' AND e.manager_id > 120 ORDER BY e.last_name)
LOOP
  DBMS_OUTPUT.PUT_LINE ('Name = ' || employee.last_name || ', Job = ' || employee.job_title);
END LOOP;
DBMS_OUTPUT.put_line('total time: ' || to_char(DBMS_UTILITY.get_time - l_start) || ' hsecs');
END;
/
 
declare
l_start number;
type rec_type is table of varchar2(20);
name_rec rec_type;
job_rec rec_type;
begin
l_start:= DBMS_UTILITY.get_time;
dbms_lock.sleep(1);
SELECT e.last_name, j.job_title bulk collect into name_rec,job_rec FROM employees e,jobs j 
where e.job_id=j.job_id and  e.job_id LIKE '%CLERK%' AND e.manager_id > 120 ORDER BY e.last_name;
for j in name_rec.first..name_rec.last loop
  DBMS_OUTPUT.PUT_LINE ('Name = ' || name_rec(j) || ', Job = ' || job_rec(j));
END LOOP;
DBMS_OUTPUT.put_line('total time: ' || to_char(DBMS_UTILITY.get_time - l_start) || ' hsecs');
end;
/
In this code, I put a timestamp in each block, but they are useless, since they both launched virtually instantaneous...

Best regards
Val

(1) bulk fired fresh primary use is to reduce the change of context between sql and pl sql engine.
(2), you should always use LIMIT when it comes with bulk collect, this does not increase the load on the PGA.
(3) and the ideal number of BOUNDARY lines is 100.

Also if you really want to compare performance improvements between the two different approaches to sql pl try to use the package of runstats tom Kyte

http://asktom.Oracle.com/pls/Apex/asktom.download_file?p_file=6551378329289980701

Tags: Database

Similar Questions

  • Select Insert and bulk collect into exadata

    Hi all

    We work in Oracle Exadata. I am new to oracle exacta.  We need to insert some 7.5 million records in our table. My manager who has worked at exadata asked me to insert, select to load the data of 7.5 million records from one table to another. He asked me to forget fired fresh concepts in bulk. I read exadata prefer basic set rank of basic techniques. Is in bulk collect not a technical set base? Select Insert or in bulk which is a better technique, gather to load records from one table to the other in oracle exadata? Please advise me on this issue

    Mantra of Tom apply for Exadata and, in its follow-up here:

    Ask Tom & quot; DML only insert & #x2F; Select or bulk collect... & quot;

  • Using bulk collect into with assistance from the limit to avoid the TEMP tablespace error run out?

    Hi all

    I want to know if using bulk collect into limit will help to avoid the TEMP tablespace error run out.

    We use Oracle 11 g R1.

    I am assigned to a task of creating journal facilitated for all tables in a query of the APEX.

    I create procedures to execute some sql statements to create a DEC (Create table select), and then fires on these tables.

    We have about three tables with more than 26 million records.

    It seems very well running until we reached a table with more than 15 million record, we got an error says that Miss tablespace TEMP.

    I googled on this topic and retrieve the tips:

    Use NO LOG

    Parallel use

    BULK COLLECT INTO limited

    However, the questions for those above usually short-term memory rather than running out of TEMPORARY tablespace.

    I'm just a junior developer and does not have dealed with table more than 10 million documents at a time like this before.

    The database support is outsourced. If we try to keep it as minimal contact with the DBA as possible. My Manager asked me to find a solution without asking the administrator to extend the TEMP tablespace.

    I wrote a few BULK COLLECT INTO to insert about 300,000 like once on the development environment. It seems.

    But the code works only against a 000 4000 table of records. I am trying to add more data into the Test table, but yet again, we lack the tablespace on DEV (this time, it's a step a TEMP data)

    I'll give it a go against the table of 26 million records on the Production of this weekend. I just want to know if it is worth trying.

    Thanks for reading this.

    Ann

    I really need check that you did not have the sizes of huge line (like several K by rank), they are not too bad at all, which is good!

    A good rule of thumb to maximize the amount of limit clause, is to see how much memory you can afford to consume in the PGA (to avoid the number of calls to the extraction and forall section and therefore the context switches) and adjust the limit to be as close to that amount as possible.

    Use the routines below to check at what threshold value would be better suited for your system because it depends on your memory allocation and CPU consumption.  Flexibility, based on your limits of PGA, as lines of length vary, but this method will get a good order of magnitude.

    CREATE OR REPLACE PROCEDURE show_pga_memory (context_in IN VARCHAR2 DEFAULT NULL)

    IS

    l_memory NUMBER;

    BEGIN

    SELECT st. VALUE

    IN l_memory

    SYS.v_$ session se, SYS.v_$ sesstat st, SYS.v_$ statname nm

    WHERE se.audsid = USERENV ('SESSIONID')

    AND st.statistic # nm.statistic = #.

    AND themselves. SID = st. SID

    AND nm.NAME = 'pga session in memory. "

    Dbms_output.put_line (CASE

    WHEN context_in IS NULL

    THEN NULL

    ELSE context_in | ' - '

    END

    || 'Used in the session PGA memory ='

    || To_char (l_memory)

    );

    END show_pga_memory;

    DECLARE

    PROCEDURE fetch_all_rows (limit_in IN PLS_INTEGER)

    IS

    CURSOR source_cur

    IS

    SELECT *.

    FROM YOUR_TABLE;

    TYPE source_aat IS TABLE OF source_cur % ROWTYPE

    INDEX BY PLS_INTEGER;

    l_source source_aat;

    l_start PLS_INTEGER;

    l_end PLS_INTEGER;

    BEGIN

    DBMS_SESSION.free_unused_user_memory;

    show_pga_memory (limit_in |) "- BEFORE"); "."

    l_start: = DBMS_UTILITY.get_cpu_time;

    OPEN source_cur.

    LOOP

    EXTRACTION source_cur

    LOOSE COLLECTION l_source LIMITED limit_in;

    WHEN l_source EXIT. COUNT = 0;

    END LOOP;

    CLOSE Source_cur;

    l_end: = DBMS_UTILITY.get_cpu_time;

    Dbms_output.put_line (' elapsed time CPU for limit of ')

    || limit_in

    || ' = '

    || To_char (l_end - l_start)

    );

    show_pga_memory (limit_in |) "- AFTER");

    END fetch_all_rows;

    BEGIN

    fetch_all_rows (20000);

    fetch_all_rows (40000);

    fetch_all_rows (60000);

    fetch_all_rows (80000);

    fetch_all_rows (100000);

    fetch_all_rows (150000);

    fetch_all_rows (250000);

    -etc.

    END;

  • I just started to use the Muse for our design agency and learn to build us a new site, I managed to create a basic Viewer that contains sliding images based on what I have to do now is have a window POP that goes into the details of the pr

    I just started to use the Muse for our design agency and learning how to build us a new site, I managed to create a basic Viewer that contains sliding images, what I have to do now is have a PDP window that goes into details on projects, what I want is a piece of text or icon that when you ride on it , and then click a separate window opens with additional information in, once finished reading the news, you can click to close the box, any advice on how to do this?

    The best way to do what you ask is with the widget of Composition. Start with the ToolTip predefined, which by default displays the info on working capital. You can change the display option to click, which is what you are looking for. You can also add the close button or the info disappear in slowing.

    David

  • I stop using the computer for a few minutes. Then the screen of the computer turns off. Its does not sleep I need to turn off the computer then put into market and re - turn on the computer.

    If I have not used the computer for a few minutes then the screen of the computer turns off. The computer is not sleep. I tried to use the space bar to wake him but he won't answer.  I have to turn off the computer. Then turn on the computer. This has happened for 2 months. I have a Dell DM051, 446 GB HDD with 329 free GB, 2 GB RAM, Intel (r) Pentium (r) CPU 2.80 GHz, ASUS A7 Series 240 and Windows 8 Pro graphics. I replaced the graphics card because I thought that this could be the problem, but it wasn't. I need to replace to fix this? Thanks for your help.

    You have disabled things like Hibernate and hybrid sleep, etc. on the power options screen in Windows?

    Have you checked the USB settings in the Device Manager? Search tab power management for each listed root USB hub and uncheck the box "allow the computer to turn off this device...". »

    And do the same for entries under Human Interface Devices (HID) device as Manager.

    Then restart...

  • When to use the cursor for loop and the cursor (open, fetch, close)

    Hello world
    I have a small doubt about when to use the cursor for loop and when to use the cursor for loop and the cursor (open, fetch, close).
    Well, I'm not the difference between implicit and explicit cursor. So please tell me how I got to know, what to use and when?




    Kind regards
    BS2012

    Published by: BS2012 on January 29, 2013 12:15

    All SQLs are analyzed, stored and executed as cursors. Thus, you will always use a cursor.

    The problem is that languages, such as PL/SQL, provide different interfaces to interact with the SQL cursor. As the ref, the slider interface, the interface DBMS_SQL slider interface and so on.

    Each of these interfaces offers different features. For example, using the interface DBMS_SQL allows binding dynamics and dynamic recovery. The Ref Cursor interface allows your code PL/SQL pass a handle to a reference pointing to the SQL cursor, to an external client. Etc.

    The fundamental reason for the use of an explicit cursor interface is mainly that you own and manage bulk made extraction output provided by PL/SQL cursor.

    With a cursor FOR , the motor loop of PL/SQL optimize the loop by extracting block a 100 lines both. However, you cannot access this collection in bulk directly inside the loop.

    With an explicit cursor interface, you specify the size of the extraction in bulk via the clause LIMIT , and you set the variable of collection to use. This allows you to use the collection directly variable inside the loop.

    However, the need to do - code manually in bulk collection - rarely occur in the daily programs in PL/SQL. A line of treatment is both slow and not well fits. And even if your bulk code collects lines, these lines must still be processed one at a time in your code. It is much more efficient and scalable rather write SQL code, and make the engine SQL the line of treatment for you.

  • How to pick up the procedure and the slider for oracle procedure

    How to pick up the procedure and the slider for that?

    SELECT aktualne_notowania.aspolka_id,
    aktualne_notowania.Notowanie * spolki.ilosc_akcji as total
    To aktualne_notowania, spolki
    WHERE aktualne_notowania.aspolka_id = spolki.spolka_id;
    something like

    create or replcae procedure test_proc() is
    v_es_id polski_table.id%type;
    number of v_mult_val;

    cursor c1 is
    Select q.id, (q.quantity * p.price) as total_amount
    the quantity q
    price p
    where q.itemId = p.itemId

    Start

    Open c1
    loop
    Fetch c1 into v_es_id, v_mult_val;
    When exit c1% notfound;

    Update table_target
    total value: = v_mult_val
    where id: = v_es_id;

    end

    Something like this:

    merge into table_target t
    using (select select q.id, (q.quantity*p.price) as total_amount
           from   quantity q
                , price p
           where q.itemId = p.itemId
          ) s
    on    (t.id = s.id)
    when  matched then update
          set t.total = s.total_amount;
    
  • Bulk collect into the record type

    Sorry for the stupid question - I do something really simple wrong here, but can not understand. I want to choose a few rows from a table in a cursor, then in bulk it collect in a folder. I'll possibly extended the record to include additional fields that I will select return of functions, but I can't get this simple test case to run...

    PLS-00497 is the main error.

    Thanks in advance.
    create table test (
    id number primary key,
    val varchar2(20),
    something_else varchar2(20));
    
    insert into test (id, val,something_else) values (1,'test1','else');
    insert into test (id, val,something_else) values (2,'test2','else');
    insert into test (id, val,something_else) values (3,'test3','else');
    insert into test (id, val,something_else) values (4,'test4','else');
    
    commit;
    
    SQL> declare
      2   cursor test_cur is
      3   (select id, val
      4   from test);
      5
      6   type test_rt is record (
      7     id   test.id%type,
      8     val      test.val%type);
      9
     10   test_rec test_rt;
     11
     12  begin
     13    open test_cur;
     14    loop
     15      fetch test_cur bulk collect into test_rec limit 10;
     16       null;
     17     exit when test_rec.count = 0;
     18    end loop;
     19    close test_cur;
     20  end;
     21  /
        fetch test_cur bulk collect into test_rec limit 10;
                                         *
    ERROR at line 15:
    ORA-06550: line 15, column 38:
    PLS-00497: cannot mix between single row and multi-row (BULK) in INTO list
    ORA-06550: line 17, column 21:
    PLS-00302: component 'COUNT' must be declared
    ORA-06550: line 17, column 2:
    PL/SQL: Statement ignored

    You must declare an array based on your registration type.

    DECLARE
       CURSOR test_cur
       IS
             SELECT
                id,
                val
             FROM
                test
       ;
    type test_rt
    IS
       record
       (
          id test.id%type,
          val test.val%type);
       type test_rec_arr is table of test_rt index by pls_integer;
       test_rec test_rec_arr;
    BEGIN
       OPEN test_cur;
       LOOP
          FETCH
             test_cur bulk collect
          INTO
             test_rec limit 10;
          NULL;
          EXIT
       WHEN test_rec.count = 0;
       END LOOP;
       CLOSE test_cur;
    END;
     31  /
    
    PL/SQL procedure successfully completed.
    
    Elapsed: 00:00:00.06
    ME_XE?
    

    Notice that the difference is...

       type test_rec_arr is table of test_rt index by pls_integer;
       test_rec test_rec_arr;
    
  • Photosmart C4140: Using the adapter for SDHC and SDXC CF in Photosmart C4140

    I have a Photosmart C4140 printer and my cameras using SDHC and SDXC memory cards. I read the specs and some info online and it was stated that this printer does not support these cards. I bought a CF Ultimate Digigear adapter that accepts SDHC and SDCX cards for use in a CF Type 2 slot as the slot on the C4140.  I tried one of my SDXC cards and I get an error "memory card" on the LCD of the printer. Then, I tried the SDHC card in this card and it worked. I was able to view the photos on the LCD of the printer. However, when I tried this SDHC card by removing the adapter and re - insert into the CF slot, I started having the 'memory card error '.  I couldn't read this SDHC card in the new CF adapter. What could happen that he would only read the card only once? I checked this SDHC card in my camera and it still works and can store images. Does anyone know of any other CF adapters that can work?

    Info on this CF adapter can be found here:

    http://www.shopdigi.com/product.aspx?pf_id=SDXCF

    I would like any advice or ideas.

    After some trial and error, I discovered that the CF adapter has one slight movement from side to side, as he goes into the card slot see By putting my thumbs on the corners of the card and pushing the adapter in a fluid, non-stop movement, I was able to get the printer to recognize the adapter and the memory card. It takes a little practice.  This CF adapter works fine. Now I can use the cards SDHC and SDXC times with my printer. I need to buy a new printer.

  • Im running ADOBE CC 2015 on an iMac and Illustrator plant all the time when I try to use the save for web. I need to use this feature, all day and am frustrated of all accidents. Help, please.

    Im running ADOBE CC 2015 on an iMac and Illustrator plant all the time when I try to use the save for web. I need to use this feature, all day and am frustrated of all accidents. Help, please.

    Hello

    We have published a 19.0.1 hotfix that resolves this problem in discussion on this topic. Please apply the patch to your creative cloud application. The creative cloud application checks the update once a day, so you may see the update immediately.  If you want to force the check for an update at the beginning please logout and log back into the creative Cloud application.

    Link to 19.0.1 release notes: https://helpx.adobe.com/illustrator/kb/illustrator-cc-2015-crash-bug-fixes-19-0-1.html

    If you continue to see any questions send us an e-mail to [email protected]

    Kind regards

    Ashutosh

    The name of the Illustrator team engineering

  • I do my job to the computer on a MAC computer. I want to create a document using Pages and then convert the document to PDF and send a group email. I want to send the PDF using the pdf for each receiver icon must click the icon to open t

    I do my job to the computer on a MAC book PRO. I want to create a document using Pages and then convert the document to PDF and send a group email. I want to send the PDF using the pdf for each receiver icon must click the icon to open the document. My problem is the document does not show the icon, but rather the document is already open. I spoke with 2 Apple. 'Experts' care and can help me. Can someone tell me what to do?

    It's a question of how the recipients e-mail programs deal with attachments. Many e-mail programs will open all the files they can handle, including files jpg and PDF, by default, and if the recipient has not changed that there is nothing you can do about it. The only solution is to the compress first, then it will be delivered as an attachment, allowing the recipient to decompress and open it.

  • Using firefox 14.0.1. Load a link using the right click and "Open link in new window", translates into a new window opens but doesn't show URL address bar...

    Using firefox 14.0.1. Load a link using the right click and "Open link in new window", translates into a new window opens but doesn't show URL address bar. However, if I click with the right button on a link and select "Open link in a new tab", the tab displays the URL in the address bar. If it works when a new tab it's not in a new window.

    The reset Firefox feature can solve a lot of problems in restaurant Firefox to its factory default condition while saving your vital information.
    Note: This will make you lose all the Extensions, open Web sites and preferences.

    To reset Firefox, perform the following steps:

    1. Go to Firefox > help > troubleshooting information.
    2. Click on the button 'Reset Firefox'.
    3. Firefox will close and reset. After Firefox is finished, it will display a window with the imported information. Click Finish.
    4. Firefox opens with all the default settings applied.

    Information can be found in the article Firefox Refresh - reset the settings and Add-ons .

    This solve your problems? Please report to us!

  • I WISH THAT ALL PAGES TO FIT ON MY SCREEN SO I CAN'T USE THE ARROW LEFT AND ARROW RIGHT! THANK YOU VERY MUCH FOR YOUR HELP!

    MY PAGES HAVE BEEN VERY WELL UNTIL I DOWNLOADED SOMETHING, I DON'T KNOW EXACTLY.   I THOUGHT I TRY TO DELETE WHAT I DOWNLOADED ARRIVE TO WHERE I WAS, BUT I DON'T THINK IT WORKED OR I DELETE ANYTHING!  SO I'M GOING TO STILL USE THE ARROW LEFT AND ARROW RIGHT TO VIEW ALL PAGES.  I WENT TO CONTROL PANEL, DISPLAY, SETTINGS, WENT TO A HIGH NUMBER TO THE PIXEL NUMBER LOW, CE WHICH WAS THE ONLY SOLUTION POSSIBLE, AND ALL GROW.  SO I PUT IT BACK TO THE LOT WHERE HE WAS!  DON'T KNOW WHAT TO DO, SO HERE I AM ASKING FOR HELP!  Thank you!!!  MY email * address email is removed from the privacy *.

    First remove everything you have installed, check if it works.

    In case of failure and then update the display on the computer drivers

  • Windows 8, 32-bit: how to cancel the file history and use the USB for the sole purpose Ready Boost

    By mistake, I clicked file history on. The USB key used for ready boost is selected and that the disk is write protected. Windows 8, 32-bit: how to cancel the file history and use the USB for the sole purpose Ready Boost. I don't have an another USB suitable for ready boost.

    Hello

    You should be able to disable the history of files by using the local Group Policy Editor.  Consult this publication of the article.  Use the #2 option.

  • What should I do to use the Windows Fax and Scan of my computer at home for my work fax #?

    What should I do to use the Windows Fax and Scan of my computer at home for my work fax #?

    Original title: Windows Fax and Scan

    What should I do to use the Windows Fax and Scan of my computer at home for my work fax #?

    A piece of hardware called a Fax Modem, installed in or connected to your computer with the appropriate device drivers from the manufacturer of the device, you have installed in or connected to your computer.    And a telephone line.

Maybe you are looking for

  • recovery disks

    I had a problem with my new cell phone Envy 15 so I ordered the recovery disks and they came yesterday.  I tried recovery only to be told by the recovery disks that they bear not my laptop.  I chose the only option available when ordering the discs. 

  • As if paper jams in the two sided printing mode

    HP Officejet Pro 8500 has Premium Windows 7 64 bit Paper jam When I try to copy or fax from the document feeder, the document tries to recharge as in print mode both sides, however, only mode is selected. When the paper is trying to load a paper jam

  • Cannot install the updates, receive error message: automatic updates has been disabled by the administrator, but I don't.

    Original title: How can I, as an administrator, turn on automatic updates, whenever I try, I get an error message saying that automatic updates has been disabled by the administrator.  I didn't do it, then? Question stands as is.

  • Resettlement and Vista OEM activation on the same machine with different Hd.

    I have hard disk problems and was wanting to know if I can reinstall Vista OEM with the same key, the system I built a few months ago, which apparently needs a new HD, all the rest is original. I have heard, a person cannot change the motherboard, bu

  • Start MMC and windows

    O dear... when I go into Control Panel and to try, say, devices, I... MMC will work with a version of Internet Explorer earlier than 5.0 Also, when I try for a restore point I get; Windows Help and cannot start the support... .so I am unable to get t