Tuesday 9 July 2013

Nested Table in Oracle

Nested table collections are an extension of the index-by tables.
The main difference between the two is that nested tables can be stored in a database column but index-by tables
cannot. In addition some DML operations are possible on nested tables when they are stored in the database.
During creation the collection must be dense, having consecutive subscripts for the elements.
Once created elements can be deleted using the DELETE method to make the collection sparse.
The NEXT method overcomes the problems of traversing sparse collections.

sql>SET SERVEROUTPUT ON SIZE 1000000
sql>DECLARE
  TYPE table_type IS TABLE OF NUMBER(10);
  v_tab  table_type;
  v_idx  NUMBER;
BEGIN

  -- Initialise the collection with two values.
  v_tab := table_type(1, 2);

  -- Extend the collection with extra values.
  << load_loop >>
  FOR i IN 3 .. 5 LOOP
    v_tab.extend;
    v_tab(v_tab.last) := i;
  END LOOP load_loop;
 
  -- Delete the third item of the collection.
  v_tab.DELETE(3);
 
  -- Traverse sparse collection
  v_idx := v_tab.FIRST;
  << display_loop >>
  WHILE v_idx IS NOT NULL LOOP
    DBMS_OUTPUT.PUT_LINE('The number ' || v_tab(v_idx));
    v_idx := v_tab.NEXT(v_idx);
  END LOOP display_loop;
END;
/


Ur's
AmarAlam

0 comments:

Post a Comment