Skip to main content

Collections in PL/SQL and it's uses in PL/SQL Program #DOTC_Mdb

Collection In PL/SQL.

 

Collection In PL/SQL  is an ordered group of elements of a particular data types. It can be a collection of simple data type or complex data type (like user-defined or record types).  In Collection each element is identified by a unique subscript that represents its position in the collection.

 

PL/SQL Collection is of three Types

1.     Index-By Table also known as Associative Arrays

2.     Varrays

3.     Nested Tables

 In Previous Blog we already discussed about Varrays so today we will discuss about Collection type Index - by Table and Nested table and take the same example which we take for Varrays.

Index-by Table (Associative Arrays)

Index-by-table is a collection in which the array size is not fixed. In Index –by Table each key is unique and is used to locate the corresponding value. Key can be  an integer or a string. Unlike the other collection types like Varray which we discussed in previous blog where key accept subscript type is integer.

In Index – by Table the subscript can of integer or strings. At the time of creating the collection, the subscript needs be mentioned. Also index by table not store data sequentially.

Example of creating Index-by Table (Associative Arrays)  by  below Syntax :

 

 

 

TYPE type_name IS TABLE OF element_type [NOT NULL] INDEX BY subscript_type;

 

table_name  type_name;

Here, we are creating an index-by table named table_name, the keys of which will be of the subscript_type and associated values will be of the element_type.       

 

We can understand the use of Index –by table with below program as in Varray we used the same table employee. Employee table Stored in database with Record is :

 

Select * from employee;


In Above table we will use Cursor and data type for Index-By Table to get the elements of employee name and value stored in Employee table for student_name column

 

DECLARE

   CURSOR c1 is

      select name from employee;

   TYPE student_list IS TABLE of employee.employee_name%type INDEX BY binary_integer;

   name_list student_list;

   counter integer :=0;

BEGIN

   FOR i IN c1 LOOP

      counter := counter +1;

      name_list(counter) := i.employee_name;

      dbms_output.put_line('Employee('||counter||'):'||name_list(counter));

   END LOOP;

END;

/

 

The output of above code is :

Employee(1): Ashish

Employee(2): Prashant

Employee(3): Deepak   

Employee(4):  Krishna

Employee(5): Gyan

 

Note : Same output we get by using Varray but here you see some syntax different . Difference between Varray and Index by table is that In Index by table subscript type can be integer or string whereas in Varray subscript Type is integer only also Index – by table created only in PL/SQL block whereas Varray in both PL/SQL block and at Schema Level.


Nested Table : Nested table is a collection in which the size of the array is not fixed. Nested table has the integer subscript type but in Index by Table subscribt type can be both integer and String . Nested table is like a one-dimensional array with an arbitrary number of elements.

Difference with Nested table and Arrays in Collection.

An array has a declared number of elements, but in nested table it does not.Size of a nested table can be increase dynamically.An array is always dense, i.e., it always has consecutive subscripts. Nested array is dense initially, but it can become sparse when elements are deleted.

 

Example of creating Nested Table by  below Syntax :

TYPE type_name IS TABLE OF element_type [NOT NULL];

 table_name type_name;

Syntax declaration is similar to the declaration of an index-by table, but there is no INDEX BY clause in Nested Table. A nested table can be stored in a database column. It can be used for simplifying SQL operations where you join a single-column table with a larger table. Index –by Table value cannot be stored in database tables.

 We can understand the Nested Table with below program by using the same table employee. Employee table Stored in database with Record is :

Select * from employee;

DECLARE

   CURSOR C1 is 

      SELECT  name FROM employee; 

   TYPE student_list IS TABLE of employee.employee_name%type;

   name_list  student_list := student_list();

   counter integer :=0;

BEGIN

   FOR i IN C1 LOOP

      counter := counter +1;

      name_list.extend;

      name_list(counter)  := i.employee_name;

      dbms_output.put_line('Employee('||counter||'):'||name_list(counter));

   END LOOP;

END;

/  

The output of above code is :

Employee(1): Ashish

Employee(2): Prashant

Employee(3): Deepak   

Employee(4):  Krishna

Employee(5): Gyan


Same Output we get from index-by table but here you can see some different Syntax . Also Nested table column value we can use in database tables. Hope you have understand all the collections also i used same table for all the collection for better understanding. For Varray you can see my previous blog as link is below .



 

Difference between Varray , Index-by Table and Nested table is as below :

Index –by table can be dense or sparse but Varray always Dense while Nested table starts with dense and can become sparse.

Index by table subscript Type can be integer or string while Subscript type of Varray and Nested table is integer only.

Index By Table can only be created in PL/SQL block only while Nested table and Varray can be created at Pl/SQL block as well as at Schema Level.

Important Note : Nested table column can be stored in Database Table .

 

Please go through this Blog and let me know if you have any doubts.

Thanks.


Comments

Post a Comment

Popular posts from this blog

SQL and Classification of SQL in Oracle Database #Diksha Oracle Training Centre

  SQL and Classification of SQL in Oracle Database.   SQL is Structured Query Language , which is used for storing, manipulating and retrieving data stored in a relational database .SQL is the standard language for RDBMS. All the Relational Database Management Systems (RDMS) like Oracle, MySQL, Sybase, Informix, IBM DB2 and Microsoft SQL Server use SQL as their standard database language. Oracle is one of the more secured database as compared to other databases. Importance of   SQL : SQL and PL/SQL is a backend process where all data is stored and retrieved in GUI which created either by any programming languages like Java, C++, PHP etc. so we need to have very secure database so that there will be no impact for users. SQL allows users to access data in the relational database management systems. SQL is used to communicate with a database.SQL and PL/SQL allows users to create and drop databases tables , views , stored procedures , functions , packages , trigger et...

Top 50 Interview Questions On SQL and PL/SQL #DOTC_Mdb

                    Top 50 Interview Questions On SQL and PL/SQL. Today we will Discuss Top 50 interview questions and answers of SQL and PL/SQL which is frequently asked in interview.     Question 1: What is SQL and Classification of SQL? Answer SQL is a Structure Query Language which is vastly used in RDBMS database like Oracle, Sybase, DB2 , Microsoft SQL server etc.   Classification of SQL is as below: DDL (Data Definition Language):  Commands are  create , alter , drop , truncate etc DML (Data Manipulation Language) : Commands are  insert,update and delete . TCL (Transaction Control Language ) : Commands are  Commit , Rollback and Save point. DCL (Data Control Language) : Commands are Grant , Revoke Question 2:    What is meant by Joins? What are the types of join? Answer Joins are basically used to extract/get data from multiple tables using s...

Aggregate Functions and Group By Clause in Oracle with Examples #Diksha Oracle Training Centre

  Aggregate Functions and Group By Clause Oracle with Examples.   Hello Everyone, Today I will   discuss about   Aggregate function in SQL by using Group By Clause and different clauses with some examples . Please go tjrough my previous blogs in Archive folder for classification of SQL, Commands and   SQL joins for your understanding.   Aggregate Functions Allows us to perform a calculation on a set of values to return a single value . We can use Group by Clause to group the result-set by one or more columns. Also we can use Having clause to restrict or filter the data as per our requirement. Note: Whenever we use Aggregate function in SQL we can’t able to use where condition. To restrict or filter the record we need to use having clause instead of Where. Below is the most commonly used Aggregate function in SQL.   MAX : Max function   used to get the maximum values in a set of values. COUNT : This function used to count rows in ...