Documente Academic
Documente Profesional
Documente Cultură
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo siguiente: Crear registros PL/SQL definidos por el usuario Crear un registro con el atributo %ROWTYPE Crear una tabla INDEX BY Crear una tabla de registros INDEX BY Describir la diferencia entre registros, tablas y tablas de registros
Pueden contener varios valores, a diferencia de los tipos escalares Existen dos tipos:
Registros PL/SQL Recopilaciones PL/SQL Matrices asociativas o tablas INDEX BY Tabla anidada VARRAY
Utilizar registros PL/SQL para almacenar valores de distintos tipos de dato, pero slo una incidencia cada vez. Utilizar recopilaciones PL/SQL cuando desee almacenar valores del mismo tipo de dato.
Registros PL/SQL
Deben contener uno o ms componentes de cualquier tipo de dato escalar, RECORD o de tabla INDEX BY, denominados campos Son similares a las estructuras en la mayora de los lenguajes 3GL, incluidos C y C++ Estn definidos por el usuario y pueden ser el subjuego de una fila en una tabla Tratan una recopilacin de campos como una unidad lgica Resultan convenientes para recuperar una fila de datos de una tabla para su procesamiento
Sintaxis:
identifier
type_name;
field_declaration:
field_name {field_type | variable%TYPE | table.column%TYPE | table%ROWTYPE} [[NOT NULL] {:= | DEFAULT} expr]
Declarar variables para almacenar el nombre, el trabajo y el salario de un nuevo empleado. Ejemplo:
... TYPE emp_record_type IS RECORD (last_name VARCHAR2(25), job_id VARCHAR2(10), salary NUMBER(8,2)); emp_record emp_record_type; ...
Ejemplo:
Campo 1 (tipo de dato) Campo 2 (tipo de dato) Campo 3 (tipo de dato)
employee_id number(6)
100
last_name varchar2(25)
King
job_id varchar2(10)
AD_PRES
Atributo %ROWTYPE
Declarar una variable segn la recopilacin de columnas en una vista o tabla de base de datos. Anteponer %ROWTYPE con la vista o tabla de base de datos. Los campos del registro toman los nombres y los tipos de dato de las columnas de la tabla o vista.
Sintaxis:
DECLARE identifier reference%ROWTYPE;
No es necesario conocer el nmero y los tipos de dato de las columnas subyacentes de base de datos. Puede que el nmero y los tipos de dato de la columna subyacente de base de datos cambien en tiempo de ejecucin. El atributo resulta til al recuperar una fila con la sentencia SELECT *.
Atributo %ROWTYPE
...
DEFINE employee_number = 124
DECLARE emp_rec BEGIN SELECT * INTO emp_rec FROM employees employees%ROWTYPE;
WHERE
employee_id = &employee_number;
INSERT INTO retired_emps(empno, ename, job, mgr, hiredate, leavedate, sal, comm, deptno) VALUES (emp_rec.employee_id, emp_rec.last_name, emp_rec.job_id,emp_rec.manager_id,
/
SELECT * FROM retired_emps;
No tienen lmite en cuanto a tamao. No obstante, el tamao depender de los valores que pueda contener el tipo de dato clave.
Declarar una tabla INDEX BY para almacenar los apellidos de los empleados.
... TYPE ename_table_type IS TABLE OF employees.last_name%TYPE INDEX BY PLS_INTEGER; ... ename_table ename_table_type;
Copyright 2004, Oracle. Todos los derechos reservados.
Valor ...
Jones Smith Maduro ...
PLS_INTEGER
Escalar
Los siguientes mtodos facilitan el uso de las tablas INDEX BY: EXISTS COUNT PRIOR NEXT DELETE
FIRST y LAST
Defina una variable de tabla INDEX BY para contener una fila completa de una tabla. Ejemplo:
DECLARE TYPE dept_table_type IS TABLE OF departments%ROWTYPE INDEX BY PLS_INTEGER; dept_table dept_table_type; -- Each element of dept_table is a record
Tablas Anidadas
1 2 3
4 ..
2 GB
Londres ....
VARRAY
1 2 3
4 ..
10
Londres ....
Tokio
Resumen
En esta leccin, debe haber aprendido lo siguiente: Definir y hacer referencia a variables PL/SQL de tipos de dato compuestos:
Registros PL/SQL Tablas INDEX BY Tabla de registros INDEX BY
En esta prctica se abordan los siguientes temas: Declaracin de las tablas INDEX BY Procesamiento de datos mediante las tablas
INDEX BY