En este capÃtulo, discutiremos las matrices en PL / SQL. El lenguaje de programación PL / SQL proporciona una estructura de datos llamada Varrey, que puede almacenar una colección secuencial y de tamaño fijo de elementos del mismo tipo. Varray se utiliza para almacenar un conjunto ordenado de datos, sin embargo, a menudo es mejor pensar en una matriz como una colección de variables del mismo tipo.
Todas las variantes se componen de ubicaciones de memoria contiguas. La dirección más baja corresponde al primer elemento y la dirección más alta corresponde al último elemento.

Una matriz es parte de los datos del tipo de colección y denota matrices de tamaño variable. Exploraremos otros tipos de colecciones en el próximo capÃtulo. ‘Colecciones PL / SQL’…
Cada elemento en varray tiene asociado un Ãndice. También tiene un tamaño máximo que se puede cambiar dinámicamente.
El tipo varray se crea con CREAR TIPO declaración. Debe especificar el tamaño y el tipo máximo de los elementos almacenados en el varray.
La sintaxis básica para crear un tipo VARRAY en el nivel de esquema es:
CREATE OR REPLACE TYPE varray_type_name IS VARRAY(n) of <element_type>
Dónde,
El tamaño máximo de varray se puede cambiar con CAMBIAR TIPO declaración.
Por ejemplo,
CREATE Or REPLACE TYPE namearray AS VARRAY(3) OF VARCHAR2(10); / Type created.
La sintaxis básica para crear un tipo VARRAY en un bloque PL / SQL es:
TYPE varray_type_name IS VARRAY(n) of <element_type>
Por ejemplo –
TYPE namearray IS VARRAY(5) OF VARCHAR2(10); Type grades IS VARRAY(5) OF INTEGER;
Trabajemos ahora en algunos ejemplos para comprender el concepto:
El siguiente programa ilustra el uso de varrays:
DECLARE
type namesarray IS VARRAY(5) OF VARCHAR2(10);
type grades IS VARRAY(5) OF INTEGER;
names namesarray;
marks grades;
total integer;
BEGIN
names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz');
marks:= grades(98, 97, 78, 87, 92);
total := names.count;
dbms_output.put_line('Total '|| total || ' Students');
FOR i in 1 .. total LOOP
dbms_output.put_line('Student: ' || names(i) || '
Marks: ' || marks(i));
END LOOP;
END;
/
Cuando el código anterior se ejecuta en la lÃnea de comando SQL, da el siguiente resultado:
Total 5 Students Student: Kavita Marks: 98 Student: Pritam Marks: 97 Student: Ayan Marks: 78 Student: Rishav Marks: 87 Student: Aziz Marks: 92 PL/SQL procedure successfully completed.
Por favor pon atención –
En Oracle, el Ãndice inicial para varrays es siempre 1.
Puede inicializar elementos varray utilizando un método constructor de tipo varray, que tiene el mismo nombre que varray.
Los warreys son matrices unidimensionales.
Cuando se declara, varray es automáticamente NULL y debe inicializarse antes de que se pueda hacer referencia a sus elementos.
Los miembros de Varray también pueden ser el% ROWTYPE de cualquier tabla de la base de datos, o el% TYPE de cualquier campo en una tabla de la base de datos. El siguiente ejemplo ilustra este concepto.
Usaremos la tabla CLIENTES almacenada en nuestra base de datos como –
Select * from customers; +----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 32 | Ahmedabad | 2000.00 | | 2 | Khilan | 25 | Delhi | 1500.00 | | 3 | kaushik | 23 | Kota | 2000.00 | | 4 | Chaitali | 25 | Mumbai | 6500.00 | | 5 | Hardik | 27 | Bhopal | 8500.00 | | 6 | Komal | 22 | MP | 4500.00 | +----+----------+-----+-----------+----------+
El siguiente ejemplo usa cursorque estudiará en detalle en un capÃtulo aparte.
DECLARE
CURSOR c_customers is
SELECT name FROM customers;
type c_list is varray (6) of customers.name%type;
name_list c_list := c_list();
counter integer :=0;
BEGIN
FOR n IN c_customers LOOP
counter := counter + 1;
name_list.extend;
name_list(counter) := n.name;
dbms_output.put_line('Customer('||counter ||'):'||name_list(counter));
END LOOP;
END;
/
Cuando el código anterior se ejecuta en la lÃnea de comando SQL, da el siguiente resultado:
Customer(1): Ramesh Customer(2): Khilan Customer(3): kaushik Customer(4): Chaitali Customer(5): Hardik Customer(6): Komal PL/SQL procedure successfully completed.
🚫