Tipos de Datos Compuestos

Anuncio
7
Tipos de Datos Compuestos
Copyright  Oracle Corporation, 1998. All rights reserved.
Objetivos
Al
ón, usted
á:
Al final
final de
de esta
esta lecci
lección,
usted podr
podrá:
•• Crear
Crear registros
registros PL/SQL
PL/SQL definidos
definidos por
por el
el
usuarios
usuarios
•• Crear
Crear un
un registro
registro con
con el
el atributo
atributo
%ROWTYPE
%ROWTYPE
•• Crear
Crear una
una tabla
tabla PL/SQL
PL/SQL
•• Crear
Crear una
una tabla
tabla PL/SQL
PL/SQL de
de registros
registros
•• Describir
Describir la
la diferencia
diferencia entre
entre registros,
registros,
tablas
tablas yy tablas
tablas de
de registros
registros
7-2
Copyright  Oracle Corporation, 1998. All rights reserved.
Tipos de Datos Compuestos
•• Tipos:
Tipos:
–– REGISTROS
REGISTROS PL/SQL
PL/SQL
–– TABLAS
TABLAS PL/SQL
PL/SQL
•• Contienen
Contienen componentes
componentes internos.
internos.
•• Son
Son reutilizables.
reutilizables.
7-3
Copyright  Oracle Corporation, 1998. All rights reserved.
Registros PL/SQL
•• Deben
Deben contener
contener uno
uno o
o más
más componentes
componentes de
de
cualquier
cualquier campo
campo llamado
llamado tipo
tipo dde
dde datos
datos
escalar,
escalar, REGISTRO
REGISTRO o
o TABLA
TABLA PL/SQL.
PL/SQL.
•• Must
Must contain
contain one
one or
or more
more components
components of
of any
any
scalar,
scalar, RECORD,
RECORD, or
or PL/SQL
PL/SQL TABLE
TABLE datatypedatatypecalled
called fields.
fields.
•• Son
Son similares
similares en
en estructura
estructura aa los
los registros
registros de
de
un
un 3GL.
3GL.
•• No
No son
son lo
lo mismo
mismo que
que las
las filas
filas de
de una
una tabla
tabla de
de
base
base de
de datos.
datos.
•• Tratan
Tratan una
una colección
colección de
de campos
campos como
como una
una
Copyright  Oracle Corporation, 1998. All rights reserved.
7-4
unidad
unidad lógica.
lógica.
Creación de un REGISTRO
PL/SQL
Sintaxis
Sintaxis
TYPE
TYPE type_name
type_name IS
IS RECORD
RECORD
(field_declaration[,
(field_declaration[, field_declaration]…);
field_declaration]…);
Donde
Donde field_declaration
field_declaration significa
significa
field_name
field_name {field_type
{field_type || variable%TYPE
variable%TYPE
|| table.column%TYPE
table.column%TYPE || table%ROWTYPE}
table%ROWTYPE}
[[NOT
[[NOT NULL]
NULL] {:=
{:= || DEFAULT}
DEFAULT} expr]
expr]
7-5
Copyright  Oracle Corporation, 1998. All rights reserved.
Creación de un Registro PL/SQL
Declare
Declare variables
variables para
para almacenar
almacenar el
el
nombre,
nombre, trabajo
trabajo yy sueldo
sueldo de
de un
un empleado
empleado
nuevo.
nuevo.
Ejemplo
Ejemplo
...
...
TYPE
TYPE emp_record_type
emp_record_type IS
IS RECORD
RECORD
(ename
VARCHAR2(10),
(ename
VARCHAR2(10),
job
VARCHAR2(9),
job
VARCHAR2(9),
sal
NUMBER(7,2));
sal
NUMBER(7,2));
emp_record
emp_record_type;
emp_record
emp_record_type;
...
...
7-6
Copyright  Oracle Corporation, 1998. All rights reserved.
Estructura del Registro PL/SQL
Campo1
Campo2
(tipo de datos)
(tipo de datos)
Campo3
(tipo de datos)
Ejemplo
Ejemplo
Campo1
(tipo de datos)
empno number(4)
7-7
Campo2
(tipo de datos)
ename varchar2(10)
Campo3
(tipo de datos)
job varchar2(9)
Copyright  Oracle Corporation, 1998. All rights reserved.
El Atributo %ROWTYPE
•• Declare
Declare una
una variable
variable de
de acuerdo
acuerdo con
con
una
una colección
colección de
de columnas
columnas de
de una
una vista
vista
o
o tabla
tabla de
de base
base de
de datos.
datos.
•• Encabece
Encabece %ROWTYPE
%ROWTYPE con
con la
la tabla
tabla de
de
base
base de
de datos.
datos.
•• Los
Los campos
campos del
del registro
registro toman
toman sus
sus
nombres
nombres yy tipos
tipos de
de datos
datos de
de las
las
columnas
columnas de
de la
la tabla
tabla o
o la
la vista.
vista.
7-8
Copyright  Oracle Corporation, 1998. All rights reserved.
Ventajas de la Utilización de
%ROWTYPE
•• El
El número
número yy los
los tipos
tipos de
de datos
datos de
de las
las
columnas
columnas de
de la
la base
base de
de datos
datos
subyacente
subyacente pueden
pueden no
no ser
ser conocidos.
conocidos.
•• El
El número
número yy los
los tipos
tipos de
de datos
datos de
de la
la
columna
columna de
de la
la base
base de
de datos
datos
subyacente
subyacente puede
puede cambiar
cambiar en
en el
el
momento
momento de
de la
la ejecución.
ejecución.
•• Es
Es útil
útil para
para recuperar
recuperar una
una fila
fila con
con la
la
sentencia
sentencia SELECT.
SELECT.
7-9
Copyright  Oracle Corporation, 1998. All rights reserved.
El Atributo %ROWTYPE
Ejemplos
Ejemplos
Declare
Declare una
una variable
variable para
para almacenar
almacenar la
la
misma
ón sobre
misma informaci
información
sobre un
un
departamento
á almacenada
departamento que
que est
está
almacenada en
en la
la
tabla
tabla DEPT.
DEPT.
dept_record
dept_record
dept%ROWTYPE;
dept%ROWTYPE;
Declare
Declare una
una variable
variable para
para almacenar
almacenar la
la
misma
ón sobre
misma informaci
información
sobre un
un empleado
empleado
que
á almacenada
que est
está
almacenada en
en la
la tabla
tabla EMP.
EMP.
emp_record
emp_record
7-10
emp%ROWTYPE;
emp%ROWTYPE;
Copyright  Oracle Corporation, 1998. All rights reserved.
Tablas PL/SQL
•• Cuentan
Cuentan con
con dos
dos componentes:
componentes:
–– Tipo
Tipo de
de datos
datos de
de clave
clave primaria
primaria
BINARY_INTEGER
BINARY_INTEGER
–– Columna
Columna de
de tipos
tipos de
de datos
datos escalares
escalares
o
o de
de registro
registro
•• Aumentan
Aumentan dinámicamente
dinámicamente porque
porque no
no
tienen
tienen restricciones
restricciones
7-11
Copyright  Oracle Corporation, 1998. All rights reserved.
Creación de una Tabla PL/SQL
Sintaxis
Sintaxis
TYPE
TYPE type_name
type_name IS
IS TABLE
TABLE OF
OF
{column_type
{column_type || variable%TYPE
variable%TYPE
|| table.column%TYPE}
table.column%TYPE} [NOT
[NOT NULL]
NULL]
INDEX
INDEX BY
BY BINARY_INTEGER;
BINARY_INTEGER;
identifier
identifier type_name;
type_name;
Declare
Declare una
una variable
variable PL/SQL
PL/SQL para
para
almacenar
almacenar un
un nombre.
nombre.
Ejemplo
Ejemplo
...
...
TYPE
TYPE ename_table_type
ename_table_type IS
IS TABLE
TABLE OF
OF emp.ename%TYPE
emp.ename%TYPE
INDEX
INDEX BY
BY BINARY_INTEGER;
BINARY_INTEGER;
ename_table
ename_table ename_table_type;
ename_table_type;
...
...
7-12
Copyright  Oracle Corporation, 1998. All rights reserved.
Estructura de la Tabla PL/SQL
7-13
Clave Principal
Columna
...
...
1
Jones
2
Smith
3
Maduro
...
...
BINARY_INTEGER
Escalar
Copyright  Oracle Corporation, 1998. All rights reserved.
Creación de una TABLA PL/SQL
DECLARE
DECLARE
TYPE
TYPE ename_table_type
ename_table_type IS
IS TABLE
TABLE OF
OF emp.ename%TYPE
emp.ename%TYPE
INDEX
INDEX BY
BY BINARY_INTEGER;
BINARY_INTEGER;
TYPE
TYPE hiredate_table_type
hiredate_table_type IS
IS TABLE
TABLE OF
OF DATE
DATE
INDEX
INDEX BY
BY BINARY_INTEGER;
BINARY_INTEGER;
ename_table
ename_table_type;
ename_table
ename_table_type;
hiredate_table
hiredate_table hiredate_table_type;
hiredate_table_type;
BEGIN
BEGIN
ename_table(1)
ename_table(1) :=
:= 'CAMERON';
'CAMERON';
hiredate_table(8)
hiredate_table(8) :=
:= SYSDATE
SYSDATE ++ 7;
7;
IF
IF ename_table.EXISTS(1)
ename_table.EXISTS(1) THEN
THEN
INSERT
INSERT INTO
INTO ...
...
...
...
END;
END;
7-14
Copyright  Oracle Corporation, 1998. All rights reserved.
TABLA PL/SQL de REGISTROS
•• Defina
Defina una
una variable
variable TABLA
TABLA con
con el
el
atributo
atributo %ROWTYPE.
%ROWTYPE.
•• Declare
Declare una
una variable
variable PL/SQL
PL/SQL que
que
contenga
contenga información
información del
del departamento.
departamento.
Ejemplo
Ejemplo
DECLARE
DECLARE
TYPE
TYPE dept_table_type
dept_table_type IS
IS TABLE
TABLE
INDEX
INDEX BY
BY BINARY
BINARY INTEGER;
INTEGER;
dept_table
dept_table dept_table_type;
dept_table_type;
--- Each
Each element
element of
of dept_table
dept_table
7-15
OF
OF dept%ROWTYPE
dept%ROWTYPE
is
is aa record
record
Copyright  Oracle Corporation, 1998. All rights reserved.
Resumen
Defina
Defina yy haga
haga referencia
referencia aa variables
variables
PL/SQl
PL/SQl De
De tipos
tipos de
de datos
datos compuestos:
compuestos:
•• Registros
Registros PL/SQL
PL/SQL
•• Tablas
Tablas PL/SQL
PL/SQL
•• Tabla
Tabla PL/SQL
PL/SQL de
de registros
registros
Defina
Defina un
un Registro
Registro PL/SQL
PL/SQL utilizando
utilizando el
el
atributo
atributo %ROWTYPE.
%ROWTYPE.
7-16
Copyright  Oracle Corporation, 1998. All rights reserved.
Visión General de la Práctica
•• Declaración
Declaración de
de tablas
tablas PL/SQL
PL/SQL
•• Procesamiento
Procesamiento de
de datos
datos utilizando
utilizando
tablas
tablas PL/SQL
PL/SQL
7-17
Copyright  Oracle Corporation, 1998. All rights reserved.
Descargar