Académique Documents
Professionnel Documents
Culture Documents
DEFINICIN
Las vistas se pueden definir como tablas virtuales basadas en una o ms tablas o vistas y cuyos contenidos vienen definidos por una consulta sobre las mismas. Esta tabla virtual o consulta se le asigna un nombre y se almacena permanentemente en la BD, generando al igual que en las tablas una entrada en el diccionario de datos. Las vistas permiten que diferentes usuarios vean la BD desde diferentes perspectivas as como restringir el acceso a los datos de modo que diferentes usuarios accedan slo aciertas filas o columnas de una tabla. Desde el punto de vista del usuario, la vista es como una tabla real con filas y columnas, pero a diferencia de esta, sus datos no se almacenan fsicamente en la BD. Las filas y columnas de datos visibles a travs de la vista son los resultados producidos por la consulta que define la vista.
Segn el propsito con el que se organizan las vistas, pueden clasificarse en los siguientes tipos:
OTRO EJEMPLO
1. Definir una vista para el empleado n 102 que contenga solo los pedidos emitidos, por los clientes asignados al mismo. CREATE VIEW emplCientodos CLIENTESWHERE rep_clie = 102); ASSELECT *FROM PEDIDOSWHERE clie IN (SELECT num_clieFROM
pedidos
2. Definir una vista, que muestre nicamente clientes que tienen ms de 30000 en registrados actualmente.2
ASSELECT *FROM CLIENTESWHERE 30000 < (SELECT SUM (importe) FROM PEDIDOSWHERE num_clie = clie); 3. Crear una vista para el Banco Atlntico, que le permita ver la lista de usuarios que pagan en l. CREATE VIEW vistaUsuariosAtlantico BANCOSWHERE nombre = ATLANTICO); ASSELECT *FROM USUARIOSWHERE codigo_banco IN (SELECT ent_sucFROM
Son aquellas que restringen el acceso de un usuario slo a ciertas columnas de una tabla. EJEMPLO:
El departamento de procesamiento de pedidos necesita acceso nicamente al nmero de empleado, nombre y oficina asignada al mismo para procesar los pedidos. Crear una vista que muestre esta informacin. CREATE VIEW infoPedidos ASSELECT num_empl, r_oficinaFROM RVENTAS; El uso de estas vistas es aconsejable cuando los datos de la tabla son compartidos tambin por varios usuarios diferentes. La diferencia est en que ahora solo necesitamos parte de los campos, no todos.
Crear una vista con los datos personales de los usuarios de Luanco. CREATE VIEW clieLuanco localidad = LUANCO;
1.2.4 Agrupados
Son vistas que incluyen una clusula GROUP BY en la consulta especificada. Estas vistas incluyen siempre una lista de nombres de columna. EJEMPLO: Definir una vista que contenga los datos sumarios de los pedidos para cada vendedor.
CREATE VIEW datSumarios (N_pedidos, Total, Promedio, Mximo, Mnimo, N_vendedor) AS4 SELECT COUNT(*), SUM(importe), AVG(importe), MAX(importe), MIN(importe),repFROM PEDIDOSGROUP BY rep_clie;
OTRO EJEMPLO:
1- Definir una vista que muestre el total de ventas y el promedio de edad de cada oficina. CREATE VIEW totalVentas (Oficina, Total, Promedio_edad) r_oficina; 2- Crear una vista que muestre el nmero de usuarios que pagan en cada banco, junto con el promedio de pago (el mximo y el mnimo). CREATE VIEW usuariosPagan (N_usuarios, Promedio, Mximo, Mnimo,Banco) ASSELECT COUNT(*), AVG(cuota_socio), MAX(cuota_socio), MIN(cuota_socio),codigo_bancoFROM USUARIOSGROUP BY codigo_banco;
1.2.4 Compuestas
Son vistas creadas a partir de los datos de dos o ms tablas. Presentan los datos como una nica tabla virtual. Al igual que las anteriores se utilizan frecuentemente para facilitar el manejo de consultas complejas de uso frecuente en la base.
EJEMPLO:
Crear una vista de la tabla PEDIDOS con los nombres de los vendedores y clientes, en
AS SELECTnum_pedido, empresa, nombre,importeFROM PEDIDOS, RVENTAS, CLIENTESWHERE rep = num_emplAND clie = num_clie;
OTRO EJEMPLO1:
Listado del nombre de los clientes y la descripcin e importe total de cada producto de los productos pedidos por el mismo.
ASSELECT empresa, descripcin, SUM(importe)FROM CLIENTES, PEDIDOS, PRODUCTOS5 WHERE num_clie = clieAND id_producto = productoAND id_fab = fab GROUP BY empresa, id_producto, descripcion;
2. CREACIN DE PROCEDIMIENTOS
Sintaxis de un procedimiento PLSQL: CREATE OR REPLACE PROCEDURE [esquema].nombre-procedimiento (nombre-parmetro {IN, OUT, IN OUT} tipo de dato, ..) {IS, AS} Declaracin de variables; Declaracin de constantes; Declaracin de cursores; BEGIN Cuerpo del subprograma PL/SQL; EXCEPTION Bloque de excepciones PL/SQL; END;
OUT: especifica que se trata de un parmetro de salida. Son parmetros cuyo valor es devuelto despus de la ejecucin el procedimiento al bloque PL/SQL que lo llam. Las funciones PLSQL no admiten parmetros de salida. IN OUT: Son parmetros de entrada y salida a la vez. Tipo-de-dato: Indica el tipo de dato PLSQL que corresponde al parmetro (NUMBER, VARCHAR2, etc).
Al crear un procedimiento almacenado, las instrucciones que contiene se analizan para verificar si son correctas sintcticamente. Si se encuentra algn error, el procedimiento se compila, pero aparece un mensaje "con advertencias" que indica tal situacin. Un procedimiento almacenado se invoca llamndolo. En primer lugar se deben tipear y probar las instrucciones que se incluyen en el procedimiento almacenado, luego, si se obtiene el resultado esperado, se crea el procedimiento.
Los procedimientos almacenados pueden hacer referencia a tablas, vistas, a funciones definidas por el usuario y a otros procedimientos almacenados.
Un procedimiento almacenado pueden incluir cualquier cantidad y tipo de instrucciones definicin de datos, como create..., drop... alter...).
DML (de manipulacin de datos, como insert, update, delete), no instrucciones DDL (de
Para crear un procedimiento almacenado empleamos la instruccin "create procedure". La sintaxis bsica parcial es: Create Or replace procedure NOMBREPROCEDIMIENTO As Begin INSTRUCCIONES End; El bloque de instrucciones comienza luego de "begin" y acaba con "end". Si empleamos "Or replace", se sobreescribe (se reemplaza) un procedimiento existente; si se omite y existe un procedimiento con el nombre que le asignamos, Oracle mostrar un mensaje de error indicando tal situacin.
Para diferenciar los procedimientos almacenados del sistema de los procedimientos almacenados creados por el usuario use un prefijo, por ejemplo "pa_" cuando les de el nombre.
Con las siguientes instrucciones creamos un procedimiento almacenado llamado "pa_libros_aumentar10" que incrementa en un 10% el precio de todos los libros: Create procedure pa_libros_aumentar10 As Update libros set precio=precio+precio*0.1; Entonces, creamos un procedimiento almacenado colocando "create procedure" (o "create seguido de "as" las sentencias que definen el procedimiento. Para ejecutar el procedimiento almacenado creado anteriormente tipeamos: Execute pa_libros_aumentar10; Entonces, para ejecutar un procedimiento almacenado colocamos "execute" seguido del nombre del procedimiento.
de programacin, estn incluidas en el motor de la base de datos y tambin el usuario puede crear las propias, estas funciones son rutinas que aceptan parmetros, realizan una accin, como un clculo complejo, y devuelven el resultado de esa accin como un valor.
10
2.1.1Ventajas
Permiten una programacin modular: Puede crear la funcin una vez, almacenarla en la base de datos y llamarla desde el programa tantas veces como desee.
Permiten una ejecucin ms rpida. Al igual que los procedimientos almacenados, las funciones definidas por el usuario Transact-SQL reducen el costo de compilacin del cdigo Transact-SQL repetidas.
almacenando los planes en la cach y reutilizndolos para ejecuciones Pueden reducir el trfico de red. Una operacin que filtra datos sola expresin escalar se puede expresar como una funcin. La nmero de filas que se envan al cliente.
basndose en restricciones complejas que no se puede expresar en una funcin se puede invocar en la clusula WHERE para reducir el
11
Nombre-parmetro: es el nombre que nosotros queramos dar al parmetro. Podemos utilizar mltiples parmetros. En caso de no necesitarlos podemos omitir los parntesis.
IN: especifica que el parmetro es de entrada y que por tanto dicho parmetro tiene que tener un valor en el momento de llamar a la funcin o procedimiento. Si no se especifica nada, los parmetros son por defecto de tipo entrada.
OUT: especifica que se trata de un parmetro de salida. Son parmetros cuyo valor es devuelto despus de la ejecucin el procedimiento al bloque PL/SQL que lo llam. Las funciones PLSQL no admiten parmetros de salida.
2.2 EXCEPCIONES
En PL/SQL una advertencia o condicin de error es llamada una excepcin.
DECLARE
-- Declaraciones BEGIN EXCEPTION END; -- Ejecucin -- Excepcin Las excepciones pueden ser definidas en forma interna o explcitamente por el usuario. Ejemplos de excepciones definidas en forma interna son la divisin por cero y la
falta de memoria en tiempo de ejecucin. Estas mismas condiciones excepcionales tienen sus propio tipos y pueden ser referenciadas por ellos: ZERO_DIVIDE y STORAGE_ERROR. utilizando la sentencia RAISE. Las excepciones definidas por el usuario deben ser alcanzadas explcitamente
12
DECLARACIN
DECLARE BEGIN -- Declaraciones -- Ejecucin EXCEPTION WHEN NO_DATA_FOUND THEN NO_DATA_FOUND -- Se ejecuta cuando ocurre una excepcin de tipo
WHEN ZERO_DIVIDE THEN ZERO_DIVIDE -- Se ejecuta cuando ocurre una excepcin de tipo
13