<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FCollections%2FTable_of_Number</id>
		<title>Oracle PL/SQL Tutorial/Collections/Table of Number - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FCollections%2FTable_of_Number"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Collections/Table_of_Number&amp;action=history"/>
		<updated>2026-05-24T01:32:25Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Collections/Table_of_Number&amp;diff=2921&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Collections/Table_of_Number&amp;diff=2921&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Collections/Table_of_Number&amp;diff=2922&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Collections/Table_of_Number&amp;diff=2922&amp;oldid=prev"/>
				<updated>2010-05-26T10:04:25Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Accessing an entire Index-by table==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE num_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;&lt;br /&gt;
  3    myTable1 num_tab;&lt;br /&gt;
  4    myTable2 num_tab;&lt;br /&gt;
  5    v_num NUMBER :=13;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    myTable1(1):=1001;&lt;br /&gt;
  8&lt;br /&gt;
  9    myTable1(10):=1002;&lt;br /&gt;
 10&lt;br /&gt;
 11    myTable1(-10):=1003;&lt;br /&gt;
 12&lt;br /&gt;
 13    myTable1(v_num):=1004;&lt;br /&gt;
 14&lt;br /&gt;
 15    myTable2 :=myTable1;&lt;br /&gt;
 16&lt;br /&gt;
 17    dbms_output.put_line(to_char(myTable2(1))||&amp;quot; &amp;quot;||&lt;br /&gt;
 18    to_char(myTable2(10))||&amp;quot; &amp;quot;||&lt;br /&gt;
 19    to_char(myTable2(-10))||&amp;quot; &amp;quot;||&lt;br /&gt;
 20    to_char(myTable2(v_num)));&lt;br /&gt;
 21  END;&lt;br /&gt;
 22  /&lt;br /&gt;
1001 1002 1003 1004&lt;br /&gt;
PL/SQL procedure successfully completed.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Accessing an Index-by table==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE num_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;&lt;br /&gt;
  3    myTable num_tab;&lt;br /&gt;
  4    v_num NUMBER :=13;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    myTable(1):=1001;&lt;br /&gt;
  7    myTable(10):=1002;&lt;br /&gt;
  8    myTable(-10):=1003;&lt;br /&gt;
  9    myTable(v_num):=1004;&lt;br /&gt;
 10&lt;br /&gt;
 11    dbms_output.put_line(to_char(myTable(1))||&amp;quot; &amp;quot;||&lt;br /&gt;
 12    to_char(myTable(10))||&amp;quot; &amp;quot;||&lt;br /&gt;
 13    to_char(myTable(-10))||&amp;quot; &amp;quot;||&lt;br /&gt;
 14    to_char(myTable(v_num)));&lt;br /&gt;
 15  END;&lt;br /&gt;
 16  /&lt;br /&gt;
1001 1002 1003 1004&lt;br /&gt;
PL/SQL procedure successfully completed.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Accessing an undefined row of an Index-by table==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE num_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;&lt;br /&gt;
  3    myTable num_tab;&lt;br /&gt;
  4    v_num NUMBER :=13;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    myTable(1):=1001;&lt;br /&gt;
  7    myTable(10):=1002;&lt;br /&gt;
  8    myTable(-10):=1003;&lt;br /&gt;
  9    myTable(v_num):=1004;&lt;br /&gt;
 10    dbms_output.put_line(to_char(myTable(100)));&lt;br /&gt;
 11  END;&lt;br /&gt;
 12  /&lt;br /&gt;
DECLARE&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-01403: no data found&lt;br /&gt;
ORA-06512: at line 10&lt;br /&gt;
&amp;lt;topic title=&amp;quot;Sample code using exception while accessing an undefined row of an Index-by table&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;![CDATA[ &lt;br /&gt;
SQL&amp;gt; -- Sample code using exception while accessing an undefined row of an Index-by table&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE numberTabletype IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;&lt;br /&gt;
  3    myTable numberTabletype;&lt;br /&gt;
  4    v_num NUMBER :=13;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    myTable(1):=1001;&lt;br /&gt;
  7    myTable(10):=1002;&lt;br /&gt;
  8    myTable(-10):=1003;&lt;br /&gt;
  9    myTable(v_num):=1004;&lt;br /&gt;
 10    dbms_output.put_line(to_char(myTable(100)));&lt;br /&gt;
 11  EXCEPTION WHEN NO_DATA_FOUND THEN&lt;br /&gt;
 12    dbms_output.put_line (&amp;quot;Invalid array element &amp;quot;);&lt;br /&gt;
 13  END;&lt;br /&gt;
 14  /&lt;br /&gt;
Invalid array element&lt;br /&gt;
PL/SQL procedure successfully completed.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Accessing Nested Table elements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2    Type numberTableType is TABLE OF NUMBER;&lt;br /&gt;
  3    v_numarray numberTableType;&lt;br /&gt;
  4  begin&lt;br /&gt;
  5    v_numarray :=numberTableType(10,20,30,40);&lt;br /&gt;
  6&lt;br /&gt;
  7&lt;br /&gt;
  8    dbms_output.put_line(to_char(v_numarray(1))||&amp;quot;, &amp;quot;||to_char(v_numarray(2))||&amp;quot;, &amp;quot;||to_char(v_numarray(3))||&amp;quot;, &amp;quot;||to_char(v_numarray(4)));&lt;br /&gt;
  9&lt;br /&gt;
 10&lt;br /&gt;
 11    v_numarray(4):=50;&lt;br /&gt;
 12    dbms_output.put_line(to_char(v_numarray(1))||&amp;quot;, &amp;quot;||to_char(v_numarray(2))||&amp;quot;, &amp;quot;||to_char(v_numarray(3))||&amp;quot;, &amp;quot;||to_char(v_numarray(4)));&lt;br /&gt;
 13  end;&lt;br /&gt;
 14  /&lt;br /&gt;
10, 20, 30, 40&lt;br /&gt;
10, 20, 30, 50&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== An example of COUNT method==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE numberTabletype IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;&lt;br /&gt;
  3    myTable numberTabletype;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    FOR idx IN 1..10 LOOP&lt;br /&gt;
  6      myTable(idx):=(2**idx)+1;&lt;br /&gt;
  7    END LOOP;&lt;br /&gt;
  8&lt;br /&gt;
  9    FOR idx IN 1..myTable.COUNT LOOP&lt;br /&gt;
 10      dbms_output.put_line(to_char(myTable(idx)));&lt;br /&gt;
 11    END LOOP;&lt;br /&gt;
 12&lt;br /&gt;
 13  END;&lt;br /&gt;
 14  /&lt;br /&gt;
3&lt;br /&gt;
5&lt;br /&gt;
9&lt;br /&gt;
17&lt;br /&gt;
33&lt;br /&gt;
65&lt;br /&gt;
129&lt;br /&gt;
257&lt;br /&gt;
513&lt;br /&gt;
1025&lt;br /&gt;
PL/SQL procedure successfully completed.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== An example of declaring an Index-by table==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE num_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;&lt;br /&gt;
  3    myTable num_tab;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    /*Do some processing */&lt;br /&gt;
  6    null;&lt;br /&gt;
  7  END;&lt;br /&gt;
  8  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== An example of the DELETE method==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE numberTabletype IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;&lt;br /&gt;
  3    myTable numberTabletype;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    FOR idx IN 1..10 LOOP&lt;br /&gt;
  6      myTable(idx):=(2**idx)+1;&lt;br /&gt;
  7    END LOOP;&lt;br /&gt;
  8&lt;br /&gt;
  9    myTable.DELETE(1);&lt;br /&gt;
 10&lt;br /&gt;
 11    myTable.DELETE(2,5);&lt;br /&gt;
 12&lt;br /&gt;
 13    myTable.DELETE;&lt;br /&gt;
 14  END;&lt;br /&gt;
 15  /&lt;br /&gt;
PL/SQL procedure successfully completed.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== An example of the FIRST, LAST and NEXT methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE numberTabletype IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;&lt;br /&gt;
  3    myTable numberTabletype;&lt;br /&gt;
  4    idx BINARY_INTEGER;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    FOR idx IN 1..10 LOOP&lt;br /&gt;
  7      myTable(idx):=(2**idx)+1;&lt;br /&gt;
  8    END LOOP;&lt;br /&gt;
  9&lt;br /&gt;
 10    idx :=myTable.FIRST;&lt;br /&gt;
 11&lt;br /&gt;
 12    LOOP&lt;br /&gt;
 13      dbms_output.put_line(to_char(myTable(idx)));&lt;br /&gt;
 14      EXIT WHEN idx =myTable.LAST;&lt;br /&gt;
 15      idx :=myTable.NEXT(idx);&lt;br /&gt;
 16    END LOOP;&lt;br /&gt;
 17  END;&lt;br /&gt;
 18  /&lt;br /&gt;
3&lt;br /&gt;
5&lt;br /&gt;
9&lt;br /&gt;
17&lt;br /&gt;
33&lt;br /&gt;
65&lt;br /&gt;
129&lt;br /&gt;
257&lt;br /&gt;
513&lt;br /&gt;
1025&lt;br /&gt;
PL/SQL procedure successfully completed.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Assigning rows of an Index-By table by means of a LOOP==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE numberTabletype IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;&lt;br /&gt;
  3    myTable numberTabletype;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    FOR idx IN 1..10 LOOP&lt;br /&gt;
  6      myTable(idx):=(2**idx)+1;&lt;br /&gt;
  7    END LOOP;&lt;br /&gt;
  8&lt;br /&gt;
  9    FOR idx IN 1..10 LOOP&lt;br /&gt;
 10      dbms_output.put_line(to_char(myTable(idx)));&lt;br /&gt;
 11    END LOOP;&lt;br /&gt;
 12  END;&lt;br /&gt;
 13  /&lt;br /&gt;
3&lt;br /&gt;
5&lt;br /&gt;
9&lt;br /&gt;
17&lt;br /&gt;
33&lt;br /&gt;
65&lt;br /&gt;
129&lt;br /&gt;
257&lt;br /&gt;
513&lt;br /&gt;
1025&lt;br /&gt;
PL/SQL procedure successfully completed.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Associative arrays==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE site_array IS TABLE OF NUMBER INDEX BY VARCHAR2(20);&lt;br /&gt;
  3    v_example_array site_array;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    v_example_array(&amp;quot;E&amp;quot;):=10;&lt;br /&gt;
  6    v_example_array(&amp;quot;B&amp;quot;):=11;&lt;br /&gt;
  7    v_example_array(&amp;quot;S&amp;quot;):=12;&lt;br /&gt;
  8    dbms_output.put_line(v_example_array.FIRST);&lt;br /&gt;
  9    dbms_output.put_line(v_example_array.LAST);&lt;br /&gt;
 10    dbms_output.put_line(TO_CHAR(v_example_array(v_example_array.FIRST)));&lt;br /&gt;
 11  END;&lt;br /&gt;
 12  /&lt;br /&gt;
B&lt;br /&gt;
S&lt;br /&gt;
11&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== compare two tables of integers==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     TYPE nested_tab_t IS TABLE OF INTEGER;&lt;br /&gt;
  3&lt;br /&gt;
  4     tab_1   nested_tab_t := nested_tab_t (1, 2, 3, 4, 5, 6, 7);&lt;br /&gt;
  5     tab_2   nested_tab_t := nested_tab_t (7, 6, 5, 4, 3, 2, 1);&lt;br /&gt;
  6&lt;br /&gt;
  7     PROCEDURE tabs_equal (i_tab_1 IN nested_tab_t, i_tab_2 IN nested_tab_t)&lt;br /&gt;
  8     IS&lt;br /&gt;
  9        v_equal   BOOLEAN := i_tab_1 = i_tab_2;&lt;br /&gt;
 10     BEGIN&lt;br /&gt;
 11        IF v_equal IS NULL&lt;br /&gt;
 12        THEN&lt;br /&gt;
 13           DBMS_OUTPUT.put_line (&amp;quot;null&amp;quot;);&lt;br /&gt;
 14        ELSIF v_equal&lt;br /&gt;
 15        THEN&lt;br /&gt;
 16           DBMS_OUTPUT.put_line (&amp;quot;equal&amp;quot;);&lt;br /&gt;
 17        ELSE&lt;br /&gt;
 18           DBMS_OUTPUT.put_line (&amp;quot;not equal&amp;quot;);&lt;br /&gt;
 19        END IF;&lt;br /&gt;
 20     END tabs_equal;&lt;br /&gt;
 21  BEGIN&lt;br /&gt;
 22     tabs_equal (tab_1, tab_2);&lt;br /&gt;
 23     tab_1.EXTEND (1);&lt;br /&gt;
 24     tabs_equal (tab_1, tab_2);&lt;br /&gt;
 25     tab_2.EXTEND (1);&lt;br /&gt;
 26     tabs_equal (tab_1, tab_2);&lt;br /&gt;
 27  END;&lt;br /&gt;
 28  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Deleting an Index-by table using an empty Index-by table==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE numberTabletype IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;&lt;br /&gt;
  3    myTable1 numberTabletype;&lt;br /&gt;
  4    myTable2 numberTabletype;&lt;br /&gt;
  5    v_num NUMBER :=13;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7    myTable1(1):=1001;&lt;br /&gt;
  8    myTable1(10):=1002;&lt;br /&gt;
  9    myTable1(-10):=1003;&lt;br /&gt;
 10    myTable1(v_num):=1004;&lt;br /&gt;
 11    myTable1:=myTable2;&lt;br /&gt;
 12  END;&lt;br /&gt;
 13  /&lt;br /&gt;
PL/SQL procedure successfully completed.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Initialize table collection with null value==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2    Type numberTableType is TABLE OF NUMBER;&lt;br /&gt;
  3    v_numarray2 numberTableType;&lt;br /&gt;
  4  begin&lt;br /&gt;
  5    v_numarray2 :=numberTableType(NULL);&lt;br /&gt;
  6&lt;br /&gt;
  7    if v_numarray2 IS NULL then&lt;br /&gt;
  8      dbms_output.put_line(&amp;quot;v_numarray2 is null&amp;quot;);&lt;br /&gt;
  9    else&lt;br /&gt;
 10      dbms_output.put_line(&amp;quot;v_numarray2 is not null&amp;quot;);&lt;br /&gt;
 11    end if;&lt;br /&gt;
 12    if v_numarray2(1) IS NULL then&lt;br /&gt;
 13      dbms_output.put_line(&amp;quot;The first element of v_numarray2 is null&amp;quot;);&lt;br /&gt;
 14    end if;&lt;br /&gt;
 15  end;&lt;br /&gt;
 16  /&lt;br /&gt;
v_numarray2 is not null&lt;br /&gt;
The first element of v_numarray2 is null&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Initializing a Nested Table==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE numberTableType IS TABLE OF NUMBER;&lt;br /&gt;
  3&lt;br /&gt;
  4    v_numarray numberTableType :=numberTableType(10,20,30,40);&lt;br /&gt;
  5&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7&lt;br /&gt;
  8    dbms_output.put_line(&amp;quot;The first element of v_numarray is &amp;quot;||&lt;br /&gt;
  9&lt;br /&gt;
 10    TO_CHAR(v_numarray(1)));&lt;br /&gt;
 11  END;&lt;br /&gt;
 12  /&lt;br /&gt;
The first element of v_numarray is 10&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Is a table collection a null value==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2    Type numberTableType is TABLE OF NUMBER;&lt;br /&gt;
  3    v_emptyarray numberTableType :=numberTableType();&lt;br /&gt;
  4  begin&lt;br /&gt;
  5    if v_emptyarray IS NULL then&lt;br /&gt;
  6      dbms_output.put_line(&amp;quot;v_emptyarray is null&amp;quot;);&lt;br /&gt;
  7    else&lt;br /&gt;
  8      dbms_output.put_line(&amp;quot;v_emptyarray is NOT null&amp;quot;);&lt;br /&gt;
  9    end if;&lt;br /&gt;
 10  end;&lt;br /&gt;
 11  /&lt;br /&gt;
v_emptyarray is NOT null&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Loop through table of number by index==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table employee&lt;br /&gt;
  2          (&lt;br /&gt;
  3           emp_no                 integer     primary key&lt;br /&gt;
  4          ,lastname               varchar2(20)    not null&lt;br /&gt;
  5          ,firstname              varchar2(15)    not null&lt;br /&gt;
  6          ,midinit                varchar2(1)&lt;br /&gt;
  7          ,street                 varchar2(30)&lt;br /&gt;
  8          ,city                   varchar2(20)&lt;br /&gt;
  9          ,state                  varchar2(2)&lt;br /&gt;
 10          ,zip                    varchar2(5)&lt;br /&gt;
 11          ,zip_4                  varchar2(4)&lt;br /&gt;
 12          ,area_code              varchar2(3)&lt;br /&gt;
 13          ,phone                  varchar2(8)&lt;br /&gt;
 14          ,salary                 number(5,2)&lt;br /&gt;
 15          ,birthdate              date&lt;br /&gt;
 16          ,hiredate               date&lt;br /&gt;
 17          ,title                  varchar2(20)&lt;br /&gt;
 18          ,dept_no                integer&lt;br /&gt;
 19        ,mgr              integer&lt;br /&gt;
 20        ,region           number&lt;br /&gt;
 21        ,division         number&lt;br /&gt;
 22        ,total_sales          number&lt;br /&gt;
 23         );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip,zip_4, area_code, phone, birthdate, title)&lt;br /&gt;
  2  values (1,&amp;quot;Gardinia&amp;quot;,&amp;quot;Joy&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;688 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;12122&amp;quot;,&amp;quot;2333&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;200-3393&amp;quot;,&amp;quot;12-nov-1956&amp;quot;,&amp;quot;President&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values (2,&amp;quot;Anderson&amp;quot;,&amp;quot;Lucy&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;33 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;43552&amp;quot;,&amp;quot;6633&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;234-4444&amp;quot;,7.75,&amp;quot;21-mar-1951&amp;quot;,&amp;quot;1-feb-1994&amp;quot;,&amp;quot;Sales Manager&amp;quot;,2,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate,title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values (3,&amp;quot;Somers&amp;quot;,&amp;quot;Ingrid&amp;quot;,&amp;quot;E&amp;quot;,&amp;quot;12 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;76822&amp;quot;,&amp;quot;8763&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;867-6893&amp;quot;,7.75,&amp;quot;14-feb-1963&amp;quot;,&amp;quot;15-mar-1995&amp;quot;,&amp;quot;Sales Clerk&amp;quot;,2,2,100,10,10000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip,zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values (4,&amp;quot;Washington&amp;quot;,&amp;quot;Georgia&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;13th Street&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;43122&amp;quot;,&amp;quot;4333&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;340-4365&amp;quot;,11.50,&amp;quot;2-jul-1963&amp;quot;,&amp;quot;21-apr-1994&amp;quot;,&amp;quot;Designer&amp;quot;,1,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values (5,&amp;quot;Doright&amp;quot;,&amp;quot;Dudley&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;56 Langer Street&amp;quot;,&amp;quot;Staten Island&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;23332&amp;quot;,&amp;quot;4983&amp;quot;,&amp;quot;718&amp;quot;,&amp;quot;777-4365&amp;quot;,21.65,&amp;quot;15-may-1958&amp;quot;,&amp;quot;2-aug-1994&amp;quot;,&amp;quot;Designer&amp;quot;,1,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip,zip_4, area_code, phone, salary, birthdate, hiredate,title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 6,&amp;quot;Doright&amp;quot;,&amp;quot;Dorothy&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;56 Langer Street&amp;quot;,&amp;quot;Staten Island&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;23332&amp;quot;,&amp;quot;4983&amp;quot;,&amp;quot;718&amp;quot;,&amp;quot;777-4365&amp;quot;,24.65,&amp;quot;10-dec-1968&amp;quot;,&amp;quot;2-aug-1994&amp;quot;,&amp;quot;Designer&amp;quot;,1,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 7,&amp;quot;Perry&amp;quot;,&amp;quot;Donna&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;1st Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;44444&amp;quot;,&amp;quot;3444&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;111-6893&amp;quot;,7.75,&amp;quot;14-feb-1967&amp;quot;,&amp;quot;15-mar-1995&amp;quot;,&amp;quot;Sales Clerk&amp;quot;,2,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 8,&amp;quot;Roger&amp;quot;,&amp;quot;John&amp;quot;,&amp;quot;E&amp;quot;,&amp;quot;67 H Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;33822&amp;quot;,&amp;quot;1163&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;122-6893&amp;quot;,10.00,&amp;quot;14-jun-1956&amp;quot;,&amp;quot;15-mar-1995&amp;quot;,&amp;quot;Accountant&amp;quot;,3,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 9,&amp;quot;Hall&amp;quot;,&amp;quot;Ted&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;1236 Lane&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;33823&amp;quot;,&amp;quot;1164&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;222-4393&amp;quot;,13.00,&amp;quot;10-jun-1959&amp;quot;,&amp;quot;15-aug-1997&amp;quot;,&amp;quot;Sales Representative&amp;quot;,3,1,100,10,50000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 10,&amp;quot;Barbee&amp;quot;,&amp;quot;Candice&amp;quot;,&amp;quot;L&amp;quot;,&amp;quot;400 Street&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;33811&amp;quot;,&amp;quot;2009&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;321-6873&amp;quot;,12.00,&amp;quot;10-oct-1964&amp;quot;,&amp;quot;15-jan-1999&amp;quot;,&amp;quot;Sales Representative&amp;quot;,3,1,100,10,35000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2    type num_type is    table of number;&lt;br /&gt;
  3    l_manager_array     num_type := num_type(1,2,3);&lt;br /&gt;
  4    child_record_found  exception;&lt;br /&gt;
  5    pragma    exception_init(child_record_found, -2292);&lt;br /&gt;
  6    v_index             number;&lt;br /&gt;
  7  begin&lt;br /&gt;
  8    forall i in l_manager_array.FIRST..l_manager_array.LAST&lt;br /&gt;
  9       delete from employee WHERE mgr = l_manager_array(i);&lt;br /&gt;
 10       dbms_output.put_line(sql%rowcount);&lt;br /&gt;
 11    exception&lt;br /&gt;
 12       when child_record_found then&lt;br /&gt;
 13           v_index := l_manager_array.first;&lt;br /&gt;
 14           dbms_output.put_line(&amp;quot;child record found&amp;quot;);&lt;br /&gt;
 15           for i in l_manager_array.FIRST..l_manager_array.LAST&lt;br /&gt;
 16           loop&lt;br /&gt;
 17             dbms_output.put_line(&amp;quot;delete for manager &amp;quot;&lt;br /&gt;
 18                                  ||l_manager_array(v_index)&lt;br /&gt;
 19                                  ||&amp;quot; deleted &amp;quot;&lt;br /&gt;
 20                                  ||SQL%BULK_ROWCOUNT(v_index)&lt;br /&gt;
 21                                  ||&amp;quot; rows.&amp;quot;);&lt;br /&gt;
 22             v_index := l_manager_Array.NEXT(v_index);&lt;br /&gt;
 23           end loop;&lt;br /&gt;
 24           commit;&lt;br /&gt;
 25  end;&lt;br /&gt;
 26  /&lt;br /&gt;
9&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employee;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== NULL and Empty Nested Tables and NULL elements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2&lt;br /&gt;
  3    Type numberTableType is TABLE OF NUMBER;&lt;br /&gt;
  4&lt;br /&gt;
  5    v_numarray numberTableType;&lt;br /&gt;
  6&lt;br /&gt;
  7  begin&lt;br /&gt;
  8&lt;br /&gt;
  9    if v_numarray IS NULL then&lt;br /&gt;
 10&lt;br /&gt;
 11      dbms_output.put_line(&amp;quot;v_numarray is null&amp;quot;);&lt;br /&gt;
 12&lt;br /&gt;
 13    end if;&lt;br /&gt;
 14&lt;br /&gt;
 15    v_numarray :=NULL;&lt;br /&gt;
 16&lt;br /&gt;
 17    if v_numarray IS NULL then&lt;br /&gt;
 18&lt;br /&gt;
 19      dbms_output.put_line(&amp;quot;v_numarray is null after assignment&amp;quot;);&lt;br /&gt;
 20&lt;br /&gt;
 21    end if;&lt;br /&gt;
 22  end;&lt;br /&gt;
 23  /&lt;br /&gt;
v_numarray is null&lt;br /&gt;
v_numarray is null after assignment&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== number_list.EXTEND(2): Add two null value members at the end of the list.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace TYPE number_table IS TABLE OF INTEGER;&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; create or replace PROCEDURE print_list(list_in NUMBER_TABLE) IS&lt;br /&gt;
  2   BEGIN&lt;br /&gt;
  3       FOR i IN list_in.FIRST..list_in.LAST LOOP&lt;br /&gt;
  4         IF list_in.EXISTS(i) THEN&lt;br /&gt;
  5           DBMS_OUTPUT.PUT_LINE(&amp;quot;List &amp;quot;||list_in(i));&lt;br /&gt;
  6         END IF;&lt;br /&gt;
  7       END LOOP;&lt;br /&gt;
  8   END print_list;&lt;br /&gt;
  9   /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     number_list NUMBER_TABLE;&lt;br /&gt;
  3&lt;br /&gt;
  4   BEGIN&lt;br /&gt;
  5     IF NOT number_list.EXISTS(1) THEN&lt;br /&gt;
  6       number_list := number_table(1,2,3,4,5);&lt;br /&gt;
  7     END IF;&lt;br /&gt;
  8&lt;br /&gt;
  9     print_list(number_list);&lt;br /&gt;
 10&lt;br /&gt;
 11     -- Add two null value members at the end of the list.&lt;br /&gt;
 12     number_list.EXTEND(2);&lt;br /&gt;
 13&lt;br /&gt;
 14     -- Print revised contents.&lt;br /&gt;
 15     DBMS_OUTPUT.PUT_LINE(CHR(10)||&amp;quot;Nested table after a deletion&amp;quot;);&lt;br /&gt;
 16     print_list(number_list);&lt;br /&gt;
 17   END;&lt;br /&gt;
 18   /&lt;br /&gt;
List 1&lt;br /&gt;
List 2&lt;br /&gt;
List 3&lt;br /&gt;
List 4&lt;br /&gt;
List 5&lt;br /&gt;
Nested table after a deletion&lt;br /&gt;
List 1&lt;br /&gt;
List 2&lt;br /&gt;
List 3&lt;br /&gt;
List 4&lt;br /&gt;
List 5&lt;br /&gt;
List&lt;br /&gt;
List&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== number_list.EXTEND(3,4): Add three members at the end of the list and copy the contents of item 4==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace TYPE number_table IS TABLE OF INTEGER;&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; create or replace PROCEDURE print_list(list_in NUMBER_TABLE) IS&lt;br /&gt;
  2   BEGIN&lt;br /&gt;
  3       FOR i IN list_in.FIRST..list_in.LAST LOOP&lt;br /&gt;
  4         IF list_in.EXISTS(i) THEN&lt;br /&gt;
  5           DBMS_OUTPUT.PUT_LINE(&amp;quot;List &amp;quot;||list_in(i));&lt;br /&gt;
  6         END IF;&lt;br /&gt;
  7       END LOOP;&lt;br /&gt;
  8   END print_list;&lt;br /&gt;
  9   /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     number_list NUMBER_TABLE;&lt;br /&gt;
  3&lt;br /&gt;
  4   BEGIN&lt;br /&gt;
  5     IF NOT number_list.EXISTS(1) THEN&lt;br /&gt;
  6       number_list := number_table(1,2,3,4,5);&lt;br /&gt;
  7     END IF;&lt;br /&gt;
  8&lt;br /&gt;
  9     print_list(number_list);&lt;br /&gt;
 10&lt;br /&gt;
 11     &lt;br /&gt;
 12     number_list.EXTEND(3,4);&lt;br /&gt;
 13&lt;br /&gt;
 14     &lt;br /&gt;
 15     DBMS_OUTPUT.PUT_LINE(CHR(10)||&amp;quot;Nested table after a deletion&amp;quot;);&lt;br /&gt;
 16     print_list(number_list);&lt;br /&gt;
 17   END;&lt;br /&gt;
 18   /&lt;br /&gt;
List 1&lt;br /&gt;
List 2&lt;br /&gt;
List 3&lt;br /&gt;
List 4&lt;br /&gt;
List 5&lt;br /&gt;
Nested table after a deletion&lt;br /&gt;
List 1&lt;br /&gt;
List 2&lt;br /&gt;
List 3&lt;br /&gt;
List 4&lt;br /&gt;
List 5&lt;br /&gt;
List 4&lt;br /&gt;
List 4&lt;br /&gt;
List 4&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== ORA-06531: Reference to uninitialized collection==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2    Type numberTableType is TABLE OF NUMBER;&lt;br /&gt;
  3    v_numarray1 numberTableType;&lt;br /&gt;
  4  begin&lt;br /&gt;
  5    if v_numarray1 IS NULL then&lt;br /&gt;
  6      dbms_output.put_line(&amp;quot;v_numarray1 is null&amp;quot;);&lt;br /&gt;
  7    end if;&lt;br /&gt;
  8    if v_numarray1(1) IS NULL then&lt;br /&gt;
  9      dbms_output.put_line(&amp;quot;The first element of v_numarray1 is null&amp;quot;);&lt;br /&gt;
 10    end if;&lt;br /&gt;
 11  end;&lt;br /&gt;
 12  /&lt;br /&gt;
v_numarray1 is null&lt;br /&gt;
declare&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-06531: Reference to uninitialized collection&lt;br /&gt;
ORA-06512: at line 8&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== ORA-06533: Subscript beyond count==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; declare&lt;br /&gt;
  2    Type numberTableType is TABLE OF NUMBER;&lt;br /&gt;
  3&lt;br /&gt;
  4    v_numarray numberTableType;&lt;br /&gt;
  5&lt;br /&gt;
  6  begin&lt;br /&gt;
  7&lt;br /&gt;
  8    v_numarray :=numberTableType(10,20,30,40);&lt;br /&gt;
  9&lt;br /&gt;
 10    dbms_output.put_line(to_char(v_numarray(1))||&amp;quot;, &amp;quot;||to_char(v_numarray(2))||&amp;quot;, &amp;quot;||to_char(v_numarray(3))||&amp;quot;, &amp;quot;||to_char(v_numarray(4)));&lt;br /&gt;
 11&lt;br /&gt;
 12    dbms_output.put_line(to_char(v_numarray(5)));&lt;br /&gt;
 13  end;&lt;br /&gt;
 14  /&lt;br /&gt;
10, 20, 30, 40&lt;br /&gt;
declare&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-06533: Subscript beyond count&lt;br /&gt;
ORA-06512: at line 12&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Using the EXISTS method==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE numberTabletype IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;&lt;br /&gt;
  3    myTable numberTabletype;&lt;br /&gt;
  4    v_num NUMBER :=13;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    myTable(1):=1001;&lt;br /&gt;
  7&lt;br /&gt;
  8    myTable(10):=1002;&lt;br /&gt;
  9&lt;br /&gt;
 10    myTable(-10):=1003;&lt;br /&gt;
 11&lt;br /&gt;
 12    myTable(v_num):=1004;&lt;br /&gt;
 13&lt;br /&gt;
 14    IF myTable.EXISTS(100) THEN&lt;br /&gt;
 15      dbms_output.put_line(to_char(myTable(100)));&lt;br /&gt;
 16    END IF;&lt;br /&gt;
 17&lt;br /&gt;
 18  END;&lt;br /&gt;
 19  /&lt;br /&gt;
PL/SQL procedure successfully completed.&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>