Professional Documents
Culture Documents
RESUMEN DE CERTIFICACION.
Los datos son almacenados en tablas. Asociado a las tablas son los Constraints que controlan la
estructura relacional de las tablas de la Base de Datos, que son definidas por medio de
Constraints Foreign, Unique y Primary Key. Junto con los Constraints Check (incluyendo el
Constraint Not Null), estos pueden hacer cumplir las reglas de negocio.
Los Constraint puede ser forzadas o en suspendido, y si se aplican hay control sobre el
momento que se comprueban. Por defecto, todos los Constraints son forzados y comprueban en
tiempo de ejecucin de la declaracin. Una violacin al Constraint por lo tanto causara que la
declaracin sea regresada.
Los ndices tienen una doble funcin: hacer cumplir Constraints Foreign, Unique y Primary Key,
y para mejorar el rendimiento de consultas. La creacin puede ser automtica: provocada por la
creacin de un Constraint. Sin embargo, si los ndices son definidos manualmente hay varias
opciones que levan a hacer tiles.
Tablas temporales trabajan en muchas maneras como las tablas temporales. Pero los datos en
ellas es privado para la sesin. Debido a que no existen como segmentos en un espacio de
tablas permanente, pero slo en el PGA sesiones y en los segmentos temporales en un espacio
de tablas temporales, las operaciones en ellos son mucho ms rpidos.
DOS MINUTOS
Gestionando Constraints.
Un Constraints puede ser definido en tiempo de creacin de la tabla, o agregado
posteriormente.
Un Primary Key es funcionalmente equivalente a Unique Plus Not Null.
Un Constraints Unique no para la insercin de muchos valores nulos.
Constraint Foreign Key define la relacin entre dos tablas.
Crear ndices.
Los ndices son requisito para hacer cumplir Constraints Unique y Primary Key.
NULL no son incluidos en un ndice B*TREE pero son incluidos en un ndice Bitmap.
ndices B*TREE pueden ser Unique o Non-Unique, que determina si puede aceptar valores
llaves duplicados.
ndices B*TREE son adecuados para columnas de alta cardinalidad, ndices Bitmap para
columnas de baja cardinalidad.
Indices Bitmaps pueden ser Compound, function based, or descending; indices B*TREE
tambien pueden ser unique, compress y reverse key.
Para trabajar con un cursor explicito necesitamos realizar las siguientes tareas:
Declarar el cursor.
CURSOR nombre_cursor IS
instruccin_SELECT
OPEN nombre_cursor;
o bien (en el caso de un cursor con parmetros)
OPEN nombre_cursor(valor1, valor2, ..., valorN);
CLOSE nombre_cursor;
El siguiente ejemplo ilustra el trabajo con un cursor explicito. Hay que tener en cuenta que al leer
los datos del cursor debemos hacerlo sobre variables del mismo tipo de datos de la tabla (o tablas)
que trata el cursor.
DECLARE
CURSOR cpaises
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES;
co_pais VARCHAR2(3);
descripcion VARCHAR2(50);
continente VARCHAR2(25);
BEGIN
OPEN cpaises;
FETCH cpaises INTO co_pais,descripcion,continente;
CLOSE cpaises;
END;
DECLARE
CURSOR cpaises
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES;
registro cpaises%ROWTYPE;
BEGIN
OPEN cpaises;
FETCH cpaises INTO registro;
CLOSE cpaises;
END;
DECLARE
CURSOR cpaises (p_continente VARCHAR2)
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES
WHERE CONTINENTE = p_continente;
registro cpaises%ROWTYPE;
BEGIN
OPEN cpaises('EUROPA');
FETCH cpaises INTO registro;
CLOSE cpaises;
END;
Atributos de cursores
DECLARE
CURSOR cpaises
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES;
co_pais VARCHAR2(3);
descripcion VARCHAR2(50);
continente VARCHAR2(25);
BEGIN
OPEN cpaises;
FETCH cpaises INTO co_pais,descripcion,continente;
WHILE cpaises%found
LOOP
dbms_output.put_line(descripcion);
FETCH cpaises INTO co_pais,descripcion,continente;
END LOOP;
CLOSE cpaises;
END;
Cursor implicito
Las variables que reciben los datos devueltos por el cursor tienen que contener el mismo tipo
de dato que las columnas de la tabla.
Los cursores implicitos solo pueden devolver una nica fila. En caso de que se devuelva ms
de una fila (o ninguna fila) se producir una excepcion. No se preocupe si an no sabe que es
una excepcion, le valdr conocer que es el medio por el que PL/SQL gestiona los errores.
El siguiente ejemplo muestra un cursor implicito:
declare
vdescripcion VARCHAR2(50);
begin
SELECT DESCRIPCION
INTO vdescripcion
from PAISES
WHERE CO_PAIS = 'ESP';
end;