sql >> Base de Datos >  >> RDS >> Oracle

Tipo de tabla en Oracle PL SQL Ejemplo

Los tipos de tablas PL SQL son en realidad colecciones, como una matriz. Con la ayuda de las colecciones PL SQL, puede procesar datos masivos de manera eficiente. En esta publicación, le enseñaré comandos muy básicos y de uso más frecuente para colecciones de tipo de tabla PL SQL. A continuación se muestra el tipo de tabla en el ejemplo Oracle PL SQL.

Primero debe declararlo en la sección de declaración del bloque PL SQL. Aquí está la sintaxis con ejemplo:

Tipo de tabla en Oracle PL SQL Ejemplo

1. Declarar tipos de tablas PL SQL

Type any_table_type is table of emp%rowtype index by binary_integer;
emp_rec any_table_type;

Los comandos anteriores declararán el tipo de tabla any_table_type del tipo de fila de la tabla emp y luego se inicializarán con emp_rec. Después de la declaración, puede asignarle manualmente los valores. A continuación se muestra el ejemplo:

2. Asignar valores a los tipos de tablas PL SQL

set serveroutput on;
declare
Type any_table_type is table of emp%rowtype 
    index by binary_integer;
emp_rec any_table_type;
begin
emp_rec(1).ename := 'abc'; /* assigning values */
emp_rec(2).ename := 'xyz';
dbms_output.put_line(emp_rec(1).ename); /* accessing values */
dbms_output.put_line(emp_rec(2).ename);
end;

Debido a que las tablas PL SQL son como matrices, los valores deben asignarse dando el número de elemento de la matriz, como se muestra arriba. Ahora a continuación se muestra el ejemplo de cómo Eliminar de las colecciones de tipo de tabla PL SQL.

3. Eliminación de elementos de tipos de tabla SQL PL

set serveroutput on;
declare
Type any_table_type is table of emp%rowtype index by binary_integer;
emp_rec any_table_type;
begin
emp_rec(1).ename := 'abc';
emp_rec(2).ename := 'xyz';
emp_rec.delete(1); /* will delete first element */
for i in emp_rec.first .. emp_rec.last loop /* loop through the array */
dbms_output.put_line(emp_rec(i).ename);
end loop;
end;

El ejemplo anterior eliminará el primer elemento e imprimirá solo el segundo. Cuando ejecute el bloque anterior, la salida será:

xyz
Procedimiento PL/SQL completado con éxito.

Para eliminar todos los elementos del tipo de tabla PL SQL, a continuación se muestra el ejemplo:

emp_rec.delete;

4. Relleno de tipos de tablas SQL de PL mediante recopilación masiva

A continuación se muestra el tipo de tabla en el ejemplo de Oracle PL SQL para obtener los datos de la tabla emp y luego completará el tipo de tabla PL SQL usando Bulk Collect y luego actualizará la tabla emp usando FORALL. Aquí está el ejemplo:

set serveroutput on;

DECLARE
   CURSOR c
   IS
      SELECT * FROM emp;

   TYPE any_table_type IS TABLE OF emp%ROWTYPE
                             INDEX BY BINARY_INTEGER;

   emp_rec   any_table_type;
BEGIN
   OPEN c;

   FETCH c
   BULK COLLECT INTO emp_rec;

   CLOSE c;

   FORALL i IN emp_rec.FIRST .. emp_rec.LAST
      UPDATE emp
         SET comm = emp_rec (i).sal * 10 / 100
       WHERE empno = emp_rec (i).empno;

   COMMIT;
END;

También puede consultar mi herramienta de procedimiento PL SQL para generar el script para su desarrollo.