• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar

Coder Tutorial

  • Home
  • HTML
  • CSS
  • PHP
  • SQL
  • MySQL
  • JS
  • PL/SQL
  • Python
  • Java
  • Oracle

PL/SQL Collections and Records

PL/SQL Collections and Records

Collections and recordings are compound data types containing internal elements like array, record or table.

Collections

Collections are data types that allow simultaneous processing of multiple variables of the same type. Each element has a unique index, which determines its position in the collection.

Types of collections: Nested Tables, Varrays, Associative Arrays (Index-By Tables)

Nested Tables:

DECLARE
	TYPE test IS TABLE OF VARCHAR2(50);
	t1 test ;
	t2 test := test() ;
BEGIN
	IF t1 IS NULL THEN
		DBMS_OUTPUT.PUT_LINE('t1 is NULL');
	ELSE
		DBMS_OUTPUT.PUT_LINE('t1 is NOT NULL');
	END IF;
	IF t2 IS NULL THEN
		DBMS_OUTPUT.PUT_LINE('t2 is NULL');
	ELSE
		DBMS_OUTPUT.PUT_LINE('t2 is NOT NULL');
	END IF;
END;

Varrays:

DECLARE
	TYPE t_code IS VARRAY(5) OF NUMBER(3);
	test t_code := t_code(100,101);
BEGIN
	FOR i IN test.FIRST..test.LAST LOOP
		DELETE FROM customers WHERE customer_id = test (i);
	END LOOP;
END;

Associative Arrays:

DECLARE
	TYPE type_table IS TABLE OF NUMBER;
	t_table type_table:= type_table();
BEGIN
FOR i IN 1..5 LOOP
	t_table.EXTEND;
	t_table(i) := i;
END LOOP;
DBMS_OUTPUT.PUT_LINE('The table has ' || t_table.COUNT|| ' rows');
FOR i IN t_table.FIRST..t_table.LAST LOOP
	DBMS_OUTPUT.PUT_LINE('Row ' || i||' have value '|| t_table (i));
END LOOP;
FOR i IN t_table.FIRST..t_table.LAST LOOP
	t_table (i) := NULL;
END LOOP;
END;

Records

A PL/SQL record is a variable that can contain values separated, each individually addressable.
A record consists of fields, and have names that can be referenced in assignments and expressions. Fields can have a recording data types and sizes.

Example:

DECLARE
	TYPE cust_type IS RECORD
	(customer_id customers.customer_id%TYPE,
	customer_name customers.customer_name%TYPE,
	product_id customers.product_id%TYPE);
	rec cust_type;
BEGIN
	rec.customer_id:=500;
	rec.customer_name:='COMPANY';
	rec.product_id:='121';
	DBMS_OUTPUT.PUT_LINE(rec.customer_id||' '|| rec.customer_name ||' '|| rec.product_id);
END;

%ROWTYPE attribute is used to declare a record based on a collection of columns in database table.
Fields with registration they will get their name and type of data from the table or view columns referenced in the declaration of registration.

DECLARE
	CURSOR c1 IS 
	SELECT product_id, product_name, price 
	FROM products;
	rec1 c1%ROWTYPE;
	TYPE ProRec2 IS RECORD (
		pro_id    products.product_id%TYPE, 
		pro_name  products.product_name%TYPE, 
		pro_price products.price%TYPE
		);
	rec2 ProRec2;
	TYPE ProRec3 IS RECORD (
		pro_id    NUMBER, 
		pro_name  VARCHAR2(14), 
		pro_price VARCHAR2(13)
		);
	rec3 ProRec3;
BEGIN
   NULL;
END;

Filed Under: PL/SQL

Primary Sidebar

Tutorials

  • HTML Tutorial
  • CSS Tutorial
  • PHP Tutorial
  • SQL Tutorial
  • MySQL Tutorial
  • JavaScript Tutorial
  • Python Tutorial
  • PL/SQL Tutorial
  • Java Tutorial
  • SQLPlus Tutorial
  • Oracle Tutorial
  • PostgreSQL Tutorial
  • Ruby Tutorial

Secondary Sidebar

Recent Posts

  • PostgreSQL ERROR: cannot begin/end transactions in PL/pgSQL
  • PostgreSQL Column must appear in the GROUP BY clause
  • PostgreSQL Column specified more than once
  • PostgreSQL Create database, Alter database examples
  • PostgreSQL Create schema syntax, Alter schema
  • PostgreSQL Create database user, alter and drop username
  • PostgreSQL Alter table name. Modify column name
  • PostgreSQL Alter Function Examples
  • PostgreSQL Drop function syntax and example
  • PostgreSQL Alter Trigger, Disable trigger, enable
  • PostgreSQL Drop Trigger, syntax and example
  • PostgreSQL Create table type, alter and drop type
  • PostgreSQL Loop – End Loop
  • PostgreSQL Case – When – Then
  • PostgreSQL IF – Elsif – Else syntax
  • PostgreSQL IF – Then – Else syntax
  • PostgreSQL IF – Then syntax
  • PostgreSQL Control Structures syntax: if then else case
  • PostgreSQL Alter table add primary key to existing table
  • PostgreSQL Alter table add foreign key constraint to a table
  • PostgreSQL Alter table add unique key constraint to a table
  • PostgreSQL Alter table add column to existing table
  • PostgreSQL Alter table add multiple columns to existing table
  • PostgreSQL Alter table drop column from existing table
  • PostgreSQL Alter table drop multiple columns from table
  • PostgreSQL Alter table rename column from existing table
  • PostgreSQL Alter table rename table name
  • PostgreSQL Alter table add check constraint to a table
  • PostgreSQL Alter table drop check constraint from a table
  • PostgreSQL tutorial. Error messages help: cause and solution.

Copyright  2018 - 2021 Coder Tutorial

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Cookie settingsACCEPT
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary
Always Enabled

Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.

Non-necessary

Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.

SAVE & ACCEPT