<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FPL_SQL%2FTable_of_number</id>
		<title>Oracle PL/SQL/PL SQL/Table of number - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FPL_SQL%2FTable_of_number"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/PL_SQL/Table_of_number&amp;action=history"/>
		<updated>2026-05-26T12:49:21Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/PL_SQL/Table_of_number&amp;diff=1965&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/PL_SQL/Table_of_number&amp;diff=1965&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:19Z</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://sqle.ru/index.php?title=Oracle_PL/SQL/PL_SQL/Table_of_number&amp;diff=1966&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/PL_SQL/Table_of_number&amp;diff=1966&amp;oldid=prev"/>
				<updated>2010-05-26T09:59:50Z</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;==A nested table of a scalar variable:==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE number_table IS TABLE OF NUMBER;&lt;br /&gt;
  3    list NUMBER_TABLE := number_table(1,2,3,4,5,6,7,8);&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    list.DELETE(2);&lt;br /&gt;
  6    FOR i IN 1..list.COUNT LOOP&lt;br /&gt;
  7      IF list.EXISTS(i) THEN&lt;br /&gt;
  8        dbms_output.put(&amp;quot;[&amp;quot;||list(i)||&amp;quot;]&amp;quot;);&lt;br /&gt;
  9      END IF;&lt;br /&gt;
 10    END LOOP;&lt;br /&gt;
 11    dbms_output.new_line;&lt;br /&gt;
 12  END;&lt;br /&gt;
 13  /&lt;br /&gt;
[1][3][4][5][6][7]&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==assignments to nested table elements, and the ORA-6533 error.==&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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE NumbersTab IS TABLE OF NUMBER;&lt;br /&gt;
  3    v_Numbers NumbersTab := NumbersTab(1, 2, 3);&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    -- v_Numbers was initialized to have 3 elements. So the&lt;br /&gt;
  6    -- following assignments are all legal.&lt;br /&gt;
  7    v_Numbers(1) := 7;&lt;br /&gt;
  8    v_Numbers(2) := -1;&lt;br /&gt;
  9&lt;br /&gt;
 10    -- However, this assignment will raise ORA-6533.&lt;br /&gt;
 11    v_Numbers(4) := 4;&lt;br /&gt;
 12  END;&lt;br /&gt;
 13  /&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 11&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Associate array: varchar2 to number map==&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;
   &lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE varcharType IS TABLE OF NUMBER(17,2) INDEX BY VARCHAR2(12);&lt;br /&gt;
  3    city               varcharType;&lt;br /&gt;
  4    sales_figure       NUMBER;&lt;br /&gt;
  5    first              VARCHAR2(12);&lt;br /&gt;
  6    last               VARCHAR2(12);&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8    city(&amp;quot;West&amp;quot;) := 2.3;&lt;br /&gt;
  9    city(&amp;quot;East&amp;quot;) := 1.9;&lt;br /&gt;
 10    city(&amp;quot;MidWest&amp;quot;) := 3.4;&lt;br /&gt;
 11    sales_figure := city(&amp;quot;East&amp;quot;);&lt;br /&gt;
 12    first := city.FIRST;&lt;br /&gt;
 13    last := city.LAST;&lt;br /&gt;
 14    sales_figure := city(city.LAST);&lt;br /&gt;
 15    city(&amp;quot;West&amp;quot;) := 1.55;&lt;br /&gt;
 16    DBMS_OUTPUT.PUT_LINE (first);&lt;br /&gt;
 17    DBMS_OUTPUT.PUT_LINE (last);&lt;br /&gt;
 18    DBMS_OUTPUT.PUT_LINE (sales_figure);&lt;br /&gt;
 19  END;&lt;br /&gt;
 20  /&lt;br /&gt;
East&lt;br /&gt;
West&lt;br /&gt;
2.3&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Clear the salaries table by assigning the empty version to it==&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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2      TYPE salary_table IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;&lt;br /&gt;
  3&lt;br /&gt;
  4      salaries salary_table;&lt;br /&gt;
  5      salaries_empty salary_table;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7      salaries(20) := 50550;&lt;br /&gt;
  8      salaries(40) := 50550;&lt;br /&gt;
  9      salaries(60) := 50550;&lt;br /&gt;
 10&lt;br /&gt;
 11      salaries := salaries_empty;&lt;br /&gt;
 12  END;&lt;br /&gt;
 13  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Declare an index-by table variable to hold the employee records that we read in==&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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2      TYPE num_table IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;&lt;br /&gt;
  3&lt;br /&gt;
  4      nums num_table;&lt;br /&gt;
  5      some_num NUMBER;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7      nums(10) := 11;&lt;br /&gt;
  8&lt;br /&gt;
  9      BEGIN&lt;br /&gt;
 10          some_num := nums(11);&lt;br /&gt;
 11      EXCEPTION&lt;br /&gt;
 12      WHEN NO_DATA_FOUND THEN&lt;br /&gt;
 13          DBMS_OUTPUT.PUT_LINE(&amp;quot;Element 11 does not exist.&amp;quot;);&lt;br /&gt;
 14      END;&lt;br /&gt;
 15&lt;br /&gt;
 16      IF nums.EXISTS(11) THEN&lt;br /&gt;
 17          some_num := nums(11);&lt;br /&gt;
 18      ELSE&lt;br /&gt;
 19          DBMS_OUTPUT.PUT_LINE(&amp;quot;Element 11 still does not exist.&amp;quot;);&lt;br /&gt;
 20      END IF;&lt;br /&gt;
 21  END;&lt;br /&gt;
 22  /&lt;br /&gt;
Element 11 does not exist.&lt;br /&gt;
Element 11 still does not exist.&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Delete a elements from 2, 3 and 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;
   &lt;br /&gt;
SQL&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     DBMS_OUTPUT.PUT_LINE(&amp;quot;Nested table before a deletion&amp;quot;);&lt;br /&gt;
 10     print_list(number_list);&lt;br /&gt;
 11&lt;br /&gt;
 12     number_list.DELETE(2,4);&lt;br /&gt;
 13&lt;br /&gt;
 14     DBMS_OUTPUT.PUT_LINE(CHR(10)||&amp;quot;Nested table after a deletion&amp;quot;);&lt;br /&gt;
 15     print_list(number_list);&lt;br /&gt;
 16   END;&lt;br /&gt;
 17   /&lt;br /&gt;
Nested table before 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;
Nested table after a deletion&lt;br /&gt;
List 1&lt;br /&gt;
List 5&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Delete element 2.==&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;
   &lt;br /&gt;
SQL&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;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     number_list NUMBER_TABLE;&lt;br /&gt;
  3   BEGIN&lt;br /&gt;
  4     IF NOT number_list.EXISTS(1) THEN&lt;br /&gt;
  5       number_list := number_table(1,2,3,4,5);&lt;br /&gt;
  6     END IF;&lt;br /&gt;
  7&lt;br /&gt;
  8     DBMS_OUTPUT.PUT_LINE(&amp;quot;Nested table before a deletion&amp;quot;);&lt;br /&gt;
  9     print_list(number_list);&lt;br /&gt;
 10&lt;br /&gt;
 11     number_list.DELETE(2);&lt;br /&gt;
 12&lt;br /&gt;
 13      &lt;br /&gt;
 14     DBMS_OUTPUT.PUT_LINE(CHR(10)||&amp;quot;Nested table after a deletion&amp;quot;);&lt;br /&gt;
 15     print_list(number_list);&lt;br /&gt;
 16   END;&lt;br /&gt;
 17   /&lt;br /&gt;
Nested table before 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;
Nested table after a deletion&lt;br /&gt;
List 1&lt;br /&gt;
List 3&lt;br /&gt;
List 4&lt;br /&gt;
List 5&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==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;
    &lt;br /&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     DBMS_OUTPUT.PUT_LINE(&amp;quot;Nested table before a deletion&amp;quot;);&lt;br /&gt;
 10     print_list(number_list);&lt;br /&gt;
 11&lt;br /&gt;
 12     number_list.DELETE(2);&lt;br /&gt;
 13&lt;br /&gt;
 14     DBMS_OUTPUT.PUT_LINE(CHR(10)||&amp;quot;Nested table after a deletion&amp;quot;);&lt;br /&gt;
 15     print_list(number_list);&lt;br /&gt;
 16   END;&lt;br /&gt;
 17   /&lt;br /&gt;
Nested table before 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;
Nested table after a deletion&lt;br /&gt;
List 1&lt;br /&gt;
List 3&lt;br /&gt;
List 4&lt;br /&gt;
List 5&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Extend space in number 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;
    &lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON SIZE 1000000&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- Create a table for the example.&lt;br /&gt;
SQL&amp;gt; CREATE TABLE myTable&lt;br /&gt;
  2  (id                NUMBER              NOT NULL&lt;br /&gt;
  3  ,CONSTRAINT id_pk  PRIMARY KEY (id));&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; DECLARE&lt;br /&gt;
  2    TYPE number_table IS TABLE OF myTable.id%TYPE;&lt;br /&gt;
  3&lt;br /&gt;
  4    number_list NUMBER_TABLE := number_table();&lt;br /&gt;
  5&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7&lt;br /&gt;
  8    &lt;br /&gt;
  9    number_list.EXTEND(10000);&lt;br /&gt;
 10&lt;br /&gt;
 11    &lt;br /&gt;
 12    FOR i IN 1..10000 LOOP&lt;br /&gt;
 13&lt;br /&gt;
 14      &lt;br /&gt;
 15      number_list(i) := i;&lt;br /&gt;
 16&lt;br /&gt;
 17    END LOOP;&lt;br /&gt;
 18&lt;br /&gt;
 19    &lt;br /&gt;
 20    FORALL i IN 1..number_list.COUNT&lt;br /&gt;
 21      INSERT INTO myTable VALUES (number_list(i));&lt;br /&gt;
 22  END;&lt;br /&gt;
 23  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==FIRST method returns the lowest subscript value used in a 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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE number_table IS TABLE OF INTEGER INDEX BY VARCHAR2(9 CHAR);&lt;br /&gt;
  3    number_list NUMBER_TABLE;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    &lt;br /&gt;
  6    number_list(&amp;quot;One&amp;quot;) := 1;&lt;br /&gt;
  7    number_list(&amp;quot;Two&amp;quot;) := 2;&lt;br /&gt;
  8    number_list(&amp;quot;Nine&amp;quot;) := 9;&lt;br /&gt;
  9    &lt;br /&gt;
 10    DBMS_OUTPUT.PUT_LINE(&amp;quot;FIRST Index &amp;quot;||number_list.FIRST);&lt;br /&gt;
 11  END;&lt;br /&gt;
 12  /&lt;br /&gt;
FIRST Index Nine&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Legal and illegal table assignments.==&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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE NumbersTab IS TABLE OF NUMBER;&lt;br /&gt;
  3    v_Numbers NumbersTab := NumbersTab(1, 2, 3);&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    v_Numbers(1) := 7;&lt;br /&gt;
  6    v_Numbers(2) := -1;&lt;br /&gt;
  7&lt;br /&gt;
  8    v_Numbers(4) := 4;&lt;br /&gt;
  9  END;&lt;br /&gt;
 10  /&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 8&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NULL key value in 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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE t_NumTab IS TABLE OF NUMBER&lt;br /&gt;
  3      INDEX BY BINARY_INTEGER;&lt;br /&gt;
  4    v_TempVAR t_NumTab;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    v_TempVAR(NULL) := 4;&lt;br /&gt;
  7  END;&lt;br /&gt;
  8  /&lt;br /&gt;
DECLARE&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-06502: PL/SQL: numeric or value error: NULL index table key value&lt;br /&gt;
ORA-06512: at line 6&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&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;
   &lt;br /&gt;
 &lt;br /&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;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&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;
   &lt;br /&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;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Number Table by BINARY_INTEGER==&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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE NumberTab IS TABLE OF NUMBER&lt;br /&gt;
  3      INDEX BY BINARY_INTEGER;&lt;br /&gt;
  4    v_Numbers NumberTab;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    FOR v_Count IN 1..10 LOOP&lt;br /&gt;
  7      v_Numbers(v_Count) := v_Count * 10;&lt;br /&gt;
  8    END LOOP;&lt;br /&gt;
  9&lt;br /&gt;
 10    DBMS_OUTPUT.PUT_LINE(&amp;quot;Table elements: &amp;quot;);&lt;br /&gt;
 11    FOR v_Count IN 1..10 LOOP&lt;br /&gt;
 12      DBMS_OUTPUT.PUT_LINE(&amp;quot;  v_Numbers(&amp;quot; || v_Count || &amp;quot;): &amp;quot; ||&lt;br /&gt;
 13                           v_Numbers(v_Count));&lt;br /&gt;
 14    END LOOP;&lt;br /&gt;
 15&lt;br /&gt;
 16    BEGIN&lt;br /&gt;
 17      DBMS_OUTPUT.PUT_LINE(&amp;quot;v_Numbers(11): &amp;quot; || v_Numbers(11));&lt;br /&gt;
 18    EXCEPTION&lt;br /&gt;
 19      WHEN NO_DATA_FOUND THEN&lt;br /&gt;
 20         DBMS_OUTPUT.PUT_LINE(&lt;br /&gt;
 21           &amp;quot;No data found reading v_Numbers(11)!&amp;quot;);&lt;br /&gt;
 22    END;&lt;br /&gt;
 23  END;&lt;br /&gt;
 24  /&lt;br /&gt;
Table elements:&lt;br /&gt;
v_Numbers(1): 10&lt;br /&gt;
v_Numbers(2): 20&lt;br /&gt;
v_Numbers(3): 30&lt;br /&gt;
v_Numbers(4): 40&lt;br /&gt;
v_Numbers(5): 50&lt;br /&gt;
v_Numbers(6): 60&lt;br /&gt;
v_Numbers(7): 70&lt;br /&gt;
v_Numbers(8): 80&lt;br /&gt;
v_Numbers(9): 90&lt;br /&gt;
v_Numbers(10): 100&lt;br /&gt;
No data found reading v_Numbers(11)!&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;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Table of number index by varchar2==&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;
    &lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE charTableType IS TABLE OF NUMBER INDEX BY VARCHAR2(64);&lt;br /&gt;
  3    charTable charTableType;&lt;br /&gt;
  4    stringTable charTableType;&lt;br /&gt;
  5    howmany NUMBER;&lt;br /&gt;
  6    which VARCHAR2(64);&lt;br /&gt;
  7&lt;br /&gt;
  8  BEGIN&lt;br /&gt;
  9    charTable(&amp;quot;A&amp;quot;) := 1;&lt;br /&gt;
 10    charTable(&amp;quot;B&amp;quot;) := 2;&lt;br /&gt;
 11    howmany := charTable(&amp;quot;A&amp;quot;);&lt;br /&gt;
 12&lt;br /&gt;
 13    stringTable(&amp;quot;C&amp;quot;) := 3;&lt;br /&gt;
 14    stringTable(&amp;quot;D&amp;quot;) := 1000;&lt;br /&gt;
 15    stringTable(&amp;quot;D&amp;quot;) := 1001;&lt;br /&gt;
 16    which := stringTable.FIRST;&lt;br /&gt;
 17    dbms_output.put_line(which);&lt;br /&gt;
 18    which := stringTable.LAST;&lt;br /&gt;
 19    dbms_output.put_line(which);&lt;br /&gt;
 20    howmany := stringTable(stringTable.LAST);&lt;br /&gt;
 21    dbms_output.put_line(howmany);&lt;br /&gt;
 22  END;&lt;br /&gt;
 23  /&lt;br /&gt;
C&lt;br /&gt;
D&lt;br /&gt;
1001&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;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Try to insert elements 3 through 5==&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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE MyTable (&lt;br /&gt;
  2    num_col    NUMBER,&lt;br /&gt;
  3    char_col   VARCHAR2(60)&lt;br /&gt;
  4    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE t_Numbers IS TABLE OF NUMBER;&lt;br /&gt;
  3    v_Numbers t_Numbers := t_Numbers(1, 2, 3, 4, 5);&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    v_Numbers.DELETE(4);&lt;br /&gt;
  6&lt;br /&gt;
  7    FORALL v_Count IN 3..5&lt;br /&gt;
  8      INSERT INTO MyTable (num_col) VALUES (v_Numbers(v_Count));&lt;br /&gt;
  9  END;&lt;br /&gt;
 10  /&lt;br /&gt;
DECLARE&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-22160: element at index [4] does not exist&lt;br /&gt;
ORA-06512: at line 7&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from MyTable;&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table MyTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==TYPE NumbersTab IS TABLE OF NUMBER.==&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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE NumbersTab IS TABLE OF NUMBER;&lt;br /&gt;
  3&lt;br /&gt;
  4    v_Tab1 NumbersTab := NumbersTab(-1);&lt;br /&gt;
  5&lt;br /&gt;
  6    v_Primes NumbersTab := NumbersTab(1, 2, 3, 5, 7);&lt;br /&gt;
  7&lt;br /&gt;
  8    v_Tab2 NumbersTab := NumbersTab();&lt;br /&gt;
  9  BEGIN&lt;br /&gt;
 10    v_Tab1(1) := 12345;&lt;br /&gt;
 11&lt;br /&gt;
 12    FOR v_Count IN 1..5 LOOP&lt;br /&gt;
 13      DBMS_OUTPUT.PUT(v_Primes(v_Count) || &amp;quot; &amp;quot;);&lt;br /&gt;
 14    END LOOP;&lt;br /&gt;
 15    DBMS_OUTPUT.NEW_LINE;&lt;br /&gt;
 16  END;&lt;br /&gt;
 17  /&lt;br /&gt;
1 2 3 5 7&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use nested table constructors.==&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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set serveroutput on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE NumbersTab IS TABLE OF NUMBER;&lt;br /&gt;
  3&lt;br /&gt;
  4    &lt;br /&gt;
  5    v_Tab1 NumbersTab := NumbersTab(-1);&lt;br /&gt;
  6&lt;br /&gt;
  7    &lt;br /&gt;
  8    v_Primes NumbersTab := NumbersTab(1, 2, 3, 5, 7);&lt;br /&gt;
  9&lt;br /&gt;
 10    &lt;br /&gt;
 11    v_Tab2 NumbersTab := NumbersTab();&lt;br /&gt;
 12  BEGIN&lt;br /&gt;
 13    &lt;br /&gt;
 14    &lt;br /&gt;
 15    v_Tab1(1) := 12345;&lt;br /&gt;
 16&lt;br /&gt;
 17    &lt;br /&gt;
 18    FOR v_Count IN 1..5 LOOP&lt;br /&gt;
 19      DBMS_OUTPUT.PUT(v_Primes(v_Count) || &amp;quot; &amp;quot;);&lt;br /&gt;
 20    END LOOP;&lt;br /&gt;
 21    DBMS_OUTPUT.NEW_LINE;&lt;br /&gt;
 22  END;&lt;br /&gt;
 23  /&lt;br /&gt;
1 2 3 5 7&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use the Oracle10g Collection API COUNT method against an element.==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON SIZE 1000000&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3    TYPE number_table IS TABLE OF INTEGER;&lt;br /&gt;
  4&lt;br /&gt;
  5    &lt;br /&gt;
  6    number_list NUMBER_TABLE := number_table(1,2,3,4,5);&lt;br /&gt;
  7&lt;br /&gt;
  8  BEGIN&lt;br /&gt;
  9&lt;br /&gt;
 10&lt;br /&gt;
 11    &lt;br /&gt;
 12    DBMS_OUTPUT.PUT_LINE(&amp;quot;Count :&amp;quot;||number_list.COUNT);&lt;br /&gt;
 13&lt;br /&gt;
 14  END;&lt;br /&gt;
 15  /&lt;br /&gt;
Count :5&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use the Oracle10g Collection API DELETE method against a set of 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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON SIZE 1000000&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3    &lt;br /&gt;
  4    TYPE number_table IS TABLE OF INTEGER;&lt;br /&gt;
  5&lt;br /&gt;
  6    &lt;br /&gt;
  7    number_list NUMBER_TABLE;&lt;br /&gt;
  8&lt;br /&gt;
  9    &lt;br /&gt;
 10    PROCEDURE print_list (list_in NUMBER_TABLE) IS&lt;br /&gt;
 11&lt;br /&gt;
 12    BEGIN&lt;br /&gt;
 13&lt;br /&gt;
 14      &lt;br /&gt;
 15      FOR i IN list_in.FIRST..list_in.LAST LOOP&lt;br /&gt;
 16&lt;br /&gt;
 17        &lt;br /&gt;
 18        IF list_in.EXISTS(i) THEN&lt;br /&gt;
 19          DBMS_OUTPUT.PUT_LINE(&amp;quot;List:&amp;quot;||list_in(i));&lt;br /&gt;
 20&lt;br /&gt;
 21        END IF;&lt;br /&gt;
 22&lt;br /&gt;
 23      END LOOP;&lt;br /&gt;
 24&lt;br /&gt;
 25    END print_list;&lt;br /&gt;
 26&lt;br /&gt;
 27  BEGIN&lt;br /&gt;
 28&lt;br /&gt;
 29    &lt;br /&gt;
 30    IF NOT number_list.EXISTS(1) THEN&lt;br /&gt;
 31&lt;br /&gt;
 32      &lt;br /&gt;
 33      number_list := number_table(1,2,3,4,5);&lt;br /&gt;
 34&lt;br /&gt;
 35    END IF;&lt;br /&gt;
 36&lt;br /&gt;
 37    print_list(number_list);&lt;br /&gt;
 38&lt;br /&gt;
 39    &lt;br /&gt;
 40    number_list.DELETE(2,4);&lt;br /&gt;
 41&lt;br /&gt;
 42&lt;br /&gt;
 43    print_list(number_list);&lt;br /&gt;
 44&lt;br /&gt;
 45  END;&lt;br /&gt;
 46  /&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:1&lt;br /&gt;
List:5&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use the Oracle10g Collection API EXISTS method against an element.==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON SIZE 1000000&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3    &lt;br /&gt;
  4    TYPE number_table IS TABLE OF INTEGER;&lt;br /&gt;
  5&lt;br /&gt;
  6    &lt;br /&gt;
  7    number_list NUMBER_TABLE;&lt;br /&gt;
  8&lt;br /&gt;
  9    &lt;br /&gt;
 10    PROCEDURE print_list&lt;br /&gt;
 11      (list_in NUMBER_TABLE) IS&lt;br /&gt;
 12&lt;br /&gt;
 13    BEGIN&lt;br /&gt;
 14&lt;br /&gt;
 15      &lt;br /&gt;
 16      FOR i IN list_in.FIRST..list_in.LAST LOOP&lt;br /&gt;
 17&lt;br /&gt;
 18        &lt;br /&gt;
 19        IF list_in.EXISTS(i) THEN&lt;br /&gt;
 20&lt;br /&gt;
 21          &lt;br /&gt;
 22          DBMS_OUTPUT.PUT_LINE(&amp;quot;List :&amp;quot;||list_in(i));&lt;br /&gt;
 23&lt;br /&gt;
 24        END IF;&lt;br /&gt;
 25&lt;br /&gt;
 26      END LOOP;&lt;br /&gt;
 27&lt;br /&gt;
 28    END print_list;&lt;br /&gt;
 29&lt;br /&gt;
 30  BEGIN&lt;br /&gt;
 31&lt;br /&gt;
 32    &lt;br /&gt;
 33    IF NOT number_list.EXISTS(1) THEN&lt;br /&gt;
 34&lt;br /&gt;
 35      &lt;br /&gt;
 36      number_list := number_table(1,2,3,4,5);&lt;br /&gt;
 37&lt;br /&gt;
 38    END IF;&lt;br /&gt;
 39&lt;br /&gt;
 40    &lt;br /&gt;
 41    DBMS_OUTPUT.PUT_LINE(&amp;quot;Nested table before a deletion&amp;quot;);&lt;br /&gt;
 42&lt;br /&gt;
 43    &lt;br /&gt;
 44    print_list(number_list);&lt;br /&gt;
 45&lt;br /&gt;
 46    &lt;br /&gt;
 47    number_list.DELETE(2);&lt;br /&gt;
 48&lt;br /&gt;
 49    &lt;br /&gt;
 50    DBMS_OUTPUT.PUT_LINE(CHR(10)||&amp;quot;Nested table after a deletion&amp;quot;);&lt;br /&gt;
 51&lt;br /&gt;
 52    &lt;br /&gt;
 53    print_list(number_list);&lt;br /&gt;
 54&lt;br /&gt;
 55  END;&lt;br /&gt;
 56  /&lt;br /&gt;
Nested table before 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;
Nested table after a deletion&lt;br /&gt;
List :1&lt;br /&gt;
List :3&lt;br /&gt;
List :4&lt;br /&gt;
List :5&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use the Oracle10g Collection API EXTEND method against an element.==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON SIZE 1000000&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3    &lt;br /&gt;
  4    TYPE number_table IS TABLE OF INTEGER;&lt;br /&gt;
  5&lt;br /&gt;
  6    &lt;br /&gt;
  7    number_list NUMBER_TABLE := number_table(1,2);&lt;br /&gt;
  8&lt;br /&gt;
  9    &lt;br /&gt;
 10    PROCEDURE print_list&lt;br /&gt;
 11      (list_in NUMBER_TABLE) IS&lt;br /&gt;
 12&lt;br /&gt;
 13    BEGIN&lt;br /&gt;
 14&lt;br /&gt;
 15      &lt;br /&gt;
 16      FOR i IN list_in.FIRST..list_in.LAST LOOP&lt;br /&gt;
 17&lt;br /&gt;
 18        &lt;br /&gt;
 19        IF list_in.EXISTS(i) THEN&lt;br /&gt;
 20&lt;br /&gt;
 21          &lt;br /&gt;
 22          DBMS_OUTPUT.PUT_LINE(&amp;quot;List :&amp;quot;||list_in(i));&lt;br /&gt;
 23&lt;br /&gt;
 24        END IF;&lt;br /&gt;
 25&lt;br /&gt;
 26      END LOOP;&lt;br /&gt;
 27&lt;br /&gt;
 28    END print_list;&lt;br /&gt;
 29&lt;br /&gt;
 30  BEGIN&lt;br /&gt;
 31    print_list(number_list);&lt;br /&gt;
 32&lt;br /&gt;
 33    &lt;br /&gt;
 34    number_list.EXTEND(2);&lt;br /&gt;
 35&lt;br /&gt;
 36    &lt;br /&gt;
 37    number_list.EXTEND(3,2);&lt;br /&gt;
 38&lt;br /&gt;
 39    print_list(number_list);&lt;br /&gt;
 40&lt;br /&gt;
 41  END;&lt;br /&gt;
 42  /&lt;br /&gt;
List :1&lt;br /&gt;
List :2&lt;br /&gt;
List :1&lt;br /&gt;
List :2&lt;br /&gt;
List :&lt;br /&gt;
List :&lt;br /&gt;
List :2&lt;br /&gt;
List :2&lt;br /&gt;
List :2&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use the Oracle10g Collection API FIRST and LAST methods against a 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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON SIZE 1000000&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2&lt;br /&gt;
  3    &lt;br /&gt;
  4    TYPE number_table IS TABLE OF INTEGER INDEX BY VARCHAR2(9 CHAR);&lt;br /&gt;
  5&lt;br /&gt;
  6    &lt;br /&gt;
  7    number_list NUMBER_TABLE;&lt;br /&gt;
  8&lt;br /&gt;
  9  BEGIN&lt;br /&gt;
 10&lt;br /&gt;
 11    &lt;br /&gt;
 12    number_list(&amp;quot;One&amp;quot;) := 1;&lt;br /&gt;
 13    number_list(&amp;quot;Two&amp;quot;) := 2;&lt;br /&gt;
 14    number_list(&amp;quot;Nine&amp;quot;) := 9;&lt;br /&gt;
 15&lt;br /&gt;
 16    &lt;br /&gt;
 17    DBMS_OUTPUT.PUT_LINE(&amp;quot;FIRST Index :&amp;quot;||number_list.FIRST);&lt;br /&gt;
 18    DBMS_OUTPUT.PUT_LINE(&amp;quot;NEXT  Index :&amp;quot;||number_list.NEXT(number_list.FIRST));&lt;br /&gt;
 19&lt;br /&gt;
 20    &lt;br /&gt;
 21    DBMS_OUTPUT.PUT_LINE(CHR(10)||&amp;quot;LAST  Index :&amp;quot;||number_list.LAST);&lt;br /&gt;
 22    DBMS_OUTPUT.PUT_LINE(&amp;quot; PRIOR Index :&amp;quot;||number_list.PRIOR(number_list.LAST));&lt;br /&gt;
 23&lt;br /&gt;
 24  END;&lt;br /&gt;
 25  /&lt;br /&gt;
FIRST Index :Nine&lt;br /&gt;
NEXT  Index :One&lt;br /&gt;
LAST  Index :Two&lt;br /&gt;
PRIOR Index :One&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use variable.Last to get the last element==&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;
    &lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2    TYPE charTableType IS TABLE OF NUMBER INDEX BY VARCHAR2(64);&lt;br /&gt;
  3    charTable charTableType;&lt;br /&gt;
  4    stringTable charTableType;&lt;br /&gt;
  5    howmany NUMBER;&lt;br /&gt;
  6    which VARCHAR2(64);&lt;br /&gt;
  7&lt;br /&gt;
  8  BEGIN&lt;br /&gt;
  9    charTable(&amp;quot;A&amp;quot;) := 1;&lt;br /&gt;
 10    charTable(&amp;quot;B&amp;quot;) := 2;&lt;br /&gt;
 11    howmany := charTable(&amp;quot;A&amp;quot;);&lt;br /&gt;
 12&lt;br /&gt;
 13    stringTable(&amp;quot;C&amp;quot;) := 3;&lt;br /&gt;
 14    stringTable(&amp;quot;D&amp;quot;) := 1000;&lt;br /&gt;
 15    stringTable(&amp;quot;D&amp;quot;) := 1001;&lt;br /&gt;
 16    which := stringTable.FIRST;&lt;br /&gt;
 17&lt;br /&gt;
 18    dbms_output.put_line(which);&lt;br /&gt;
 19    which := stringTable.LAST;&lt;br /&gt;
 20    dbms_output.put_line(which);&lt;br /&gt;
 21    howmany := stringTable(stringTable.LAST);&lt;br /&gt;
 22&lt;br /&gt;
 23    dbms_output.put_line(howmany);&lt;br /&gt;
 24  END;&lt;br /&gt;
 25  /&lt;br /&gt;
C&lt;br /&gt;
D&lt;br /&gt;
1001&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;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==use virtual table in PL/SQL block==&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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type virtual_table_type as table of number&lt;br /&gt;
  2      /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2      function virtual_table( p_start number,&lt;br /&gt;
  3                              p_end number ) return virtual_table_type as&lt;br /&gt;
  4        l_vt_type virtual_table_type := virtual_table_type();&lt;br /&gt;
  5      begin&lt;br /&gt;
  6        for i in p_start .. p_end loop&lt;br /&gt;
  7          l_vt_type.extend();&lt;br /&gt;
  8          dbms_output.put_line( &amp;quot;adding &amp;quot; || i || &amp;quot; to collection...&amp;quot; );&lt;br /&gt;
  9          l_vt_type(l_vt_type.count) := i;&lt;br /&gt;
 10       end loop;&lt;br /&gt;
 11       dbms_output.put_line( &amp;quot;done...&amp;quot; );&lt;br /&gt;
 12       return l_vt_type;&lt;br /&gt;
 13     end virtual_table;&lt;br /&gt;
 14     /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt; set serveroutput on&lt;br /&gt;
SQL&amp;gt;      begin&lt;br /&gt;
  2        for x in ( select *&lt;br /&gt;
  3                     from table( virtual_table( -2, 2) ) )&lt;br /&gt;
  4        loop&lt;br /&gt;
  5          dbms_output.put_line( &amp;quot;printing from anonymous block &amp;quot; ||&lt;br /&gt;
  6                                x.column_value );&lt;br /&gt;
  7        end loop;&lt;br /&gt;
  8      end;&lt;br /&gt;
  9      /&lt;br /&gt;
adding -2 to collection...&lt;br /&gt;
adding -1 to collection...&lt;br /&gt;
adding 0 to collection...&lt;br /&gt;
adding 1 to collection...&lt;br /&gt;
adding 2 to collection...&lt;br /&gt;
done...&lt;br /&gt;
printing from anonymous block -2&lt;br /&gt;
printing from anonymous block -1&lt;br /&gt;
printing from anonymous block 0&lt;br /&gt;
printing from anonymous block 1&lt;br /&gt;
printing from anonymous block 2&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>