VARRAYS
VARRAYS
VARRAYS
VARIEDAD PL/SQL
Resumen : en este tutorial, aprenderá sobre PL/SQL VARRAY y cómo manipular elementos de
forma VARRAY efectiva.
Introducción a PL/SQLVARRAY
Declarar un VARRAYtipo
En esta declaración:
NOT NULL especifica que el elemento de VARRAY ese tipo no puede tener NULL elementos.
Tenga en cuenta que una VARRAY variable puede ser nula o no inicializada.
Para crear un VARRAY tipo al que se pueda acceder globalmente en la base de datos, no solo en su
código PL/SQL, utilice la siguiente sintaxis:
https://www.oracletutorial.com/plsql-tutorial/plsql-varray/ 1/10
10/9/23, 20:37 VARIEDAD PL/SQL
En esta declaración, OR REPLACE modifica el tipo existente manteniendo todas las concesiones de
privilegios existentes.
En esta sintaxis:
Es type_name(...) el constructor del VARRAY tipo, que acepta una lista de elementos
separados por comas como argumentos. Tiene el mismo nombre que el VARRAY tipo.
Tenga en cuenta que antes de utilizar una VARRAY variable, debe inicializarla. De lo contrario,
recibirá el siguiente error:
Para inicializar una VARRAY variable en una colección vacía (cero elementos), utilice la siguiente
sintaxis:
Si desea especificar elementos para la VARRAY variable mientras la inicializa, puede utilizar esta
sintaxis:
https://www.oracletutorial.com/plsql-tutorial/plsql-varray/ 2/10
10/9/23, 20:37 VARIEDAD PL/SQL
varray_name(n);
n es el índice del elemento, que comienza con 1 y termina con el max_elements número máximo
VARRAYEjemplos de PL/SQL
DECLARE
TYPE t_name_type IS VARRAY(2)
OF VARCHAR2(20) NOT NULL;
t_names t_name_type := t_name_type('John','Jane');
t_enames t_name_type := t_name_type();
BEGIN
-- initialize to an empty array
dbms_output.put_line("The number of elements in t_enames " || t_enames.COU
En este ejemplo:
TYPE t_name_type IS
VARRAY(2) OF VARCHAR2(20) NOT NULL;
A continuación, declare una VARRAY variable e inicialícela con VARRAY dos elementos:
Después de eso, use el COUNT método para obtener la cantidad de elementos en VARRAY
t_enames y mostrarlo.
Finalmente, use el mismo COUNT método para obtener la cantidad de elementos en VARRAY
t_names e imprimirlo.
Tenga en cuenta que puede asignar un VARRAY a otro usando la siguiente sintaxis:
varray_name := another_varray_name;
Por ejemplo:
t_enames := t_names;
https://www.oracletutorial.com/plsql-tutorial/plsql-varray/ 4/10
10/9/23, 20:37 VARIEDAD PL/SQL
DECLARE
TYPE r_customer_type IS RECORD(
customer_name customers.NAME%TYPE,
credit_limit customers.credit_limit%TYPE
);
t_customers.EXTEND;
t_customers(t_customers.LAST).customer_name := 'XYZ Inc';
t_customers(t_customers.LAST).credit_limit := 20000;
https://www.oracletutorial.com/plsql-tutorial/plsql-varray/ 5/10
10/9/23, 20:37 VARIEDAD PL/SQL
OF r_customer_type;
Después de eso, use el EXTEND método para agregar una instancia t_customers y el
LAST método para agregar un elemento al final del VARRAY t_customers
t_customers.EXTEND;
t_customers(t_customers.LAST).customer_name := 'ABC Corp';
t_customers(t_customers.LAST).credit_limit := 10000;
t_customers.EXTEND;
t_customers(t_customers.LAST).customer_name := 'XYZ Inc';
t_customers(t_customers.LAST).credit_limit := 20000;
https://www.oracletutorial.com/plsql-tutorial/plsql-varray/ 6/10
10/9/23, 20:37 VARIEDAD PL/SQL
DECLARE
TYPE r_customer_type IS RECORD(
customer_name customers.name%TYPE,
credit_limit customers.credit_limit%TYPE
);
CURSOR c_customer IS
SELECT NAME, credit_limit
FROM customers
ORDER BY credit_limit DESC
FETCH FIRST 5 ROWS ONLY;
BEGIN
-- fetch data from a cursor
FOR r_customer IN c_customer LOOP
t_customers.EXTEND;
t_customers(t_customers.LAST).customer_name := r_customer.name;
t_customers(t_customers.LAST).credit_limit := r_customer.credit_limit
END LOOP;
https://www.oracletutorial.com/plsql-tutorial/plsql-varray/ 7/10
10/9/23, 20:37 VARIEDAD PL/SQL
t_customers(l_index).customer_name ||
' has a credit of ' ||
t_customers(l_index).credit_limit
);
END LOOP;
END;
/
En este ejemplo:
Primero, declara un tipo de registro, un VARRAY tipo de registro con 5 elementos y una
VARRAY variable de ese VARRAY tipo:
En segundo lugar, declara un cursor que recupere 5 clientes con los créditos más altos:
CURSOR c_customer IS
SELECT name, credit_limit
FROM customers
ORDER BY credit_limit DESC
FETCH FIRST 5 ROWS ONLY;
https://www.oracletutorial.com/plsql-tutorial/plsql-varray/ 8/10
10/9/23, 20:37 VARIEDAD PL/SQL
Finalmente, repita los elementos de VARRAY t_customers e imprima el nombre y el crédito del
cliente:
Eliminar elementos
varray_name.DELETE;
https://www.oracletutorial.com/plsql-tutorial/plsql-varray/ 9/10
10/9/23, 20:37 VARIEDAD PL/SQL
varray_name.TRIM;
varray_name.TRIM(n)
En este tutorial, ha aprendido sobre PL/SQL VARRAY y cómo manipular elementos de forma
VARRAY efectiva.
https://www.oracletutorial.com/plsql-tutorial/plsql-varray/ 10/10