procedimientos almacenados.docx
TRANSCRIPT
Universidad José Carlos Mariátegui
Facultad de ingenierías
Carrera Profesional de Ingeniería de Sistemas e Informática
Curso : Base de Datos II
Docente : ING. Melina Alferez
Garcia
Alumno : Flores Taype Aron Jorge
Flores Chambi Sergio
Año : 2015
Procedimientos Almacenados
SQL Server ofreces dos alternativas para asegurar la integridad de datos
Integridad Declarativa: Es mediante el uso de restricciones (constraints), valores
predeterminados (defaults) y reglas (rules).
Integridad Procedimental: Es mediante la implementación de procedimientos
almacenados y desencadenadores (triggers)
Definición
Es un conjunto de instrucciones a las que se les da un nombre, esta se almacena
en el servidor, permitiendo encapsular tareas repetitivas.
Tipos de procedimientos Almacenados
Del sistema
Están almacenados en la base de datos “master” y llevan el prefijo “sp_”;
permiten recuperar información de las tablas del sistema y pueden ejecutarse en
cualquier base de datos
Locales
Son creados por el usuario, este procedimiento se puede crear en una base de
datos definida por el usuario o en todas las bases de datos del sistema a
excepción de la base de datos Resource.
Temporales
Pueden ser locales, cuyos nombres comienzan con un signo numeral (#), o
globales, cuyos nombres comienzan con 2 signos numeral (##). Los
procedimientos almacenados temporales locales están disponibles en la sesión de
un solo usuario y se eliminan automáticamente al finalizar la sesión, los globales
están disponibles en las sesiones de todos los usuarios.
Extendidos
Se implementan como bibliotecas de vínculos dinámicos (DLL, Dynamic-Link
Libraries), se ejecutan fuera del entorno de SQL Server. Generalmente llevan el
prefijo “xp_”.
Al crear un procedimiento almacenado, las instrucciones que contiene se analizan para
verificar si son correctas sintácticamente. Si no se detectan errores, SQL Server guarda
el nombre del procedimiento almacenado en la tabla del sistema “sysobjects” y su
contenido en la tabla del sistema “syscomments” en la base de datos activa. Si se
encuentra algún error, no se crea.
Un procedimiento almacenado puede hacer referencia a objetos que no existen al
momento de crearlo. Los objetos deben existir cuando se ejecute el procedimiento
almacenado.
Ventajas
Comparten la lógica de la aplicación con las otras aplicaciones, con lo cual el
acceso y las modificaciones de los datos se hacen en un solo sitio.
Permiten realizar todas las operaciones que los usuarios necesiten evitando que
tengan acceso directo a las tablas.
Reducen el tráfico de red, en vez de enviar muchas instrucciones, os usuarios
realizan operaciones enviando una única instrucción, lo cual disminuye el
número de solicitudes entre el cliente y el servidor.
Permite hacer optimizaciones en la base de datos sin mucho esfuerzo.
Desventajas
Cualquier cambio instantáneamente afecta todas las otras piezas de software.
Alto grado de acoplamiento, esto quiere decir que si una aplicación te pide que
corra en otro motor de BBDD, se tendrá que reescribir todo el código de los
procedimientos almacenados, es decir que su mayor problema es la
portabilidad.
Descripción de Procesos
Crear-ejecutar
Sintaxis
Para ejecutar el procedimiento almacenado
Ejemplo
Se creara la tabla Libros con los siguientes.
Insertar datos en la tabla creada
Al ejecutar este procedimiento
Como la tabla ya existe, se eliminaran todos los registros existentes
Ejercicio
Una empresa almacena los datos de sus empleados en una tabla llamada “empleados
1. Eliminamos la tabla si existe de no ser así la creamos la creamos
2. Ingresamos algunos registros
3. Elimine el procedmiento llamado “pa_emp_sueld si existe
4. Crear un procedimiento almacenado llamado "pa_empleados_sueldo" que
seleccione los nombres, apellidos y sueldos de los empleados.
5. Ejecute el procedimiento creado anteriormente
6. Elimine el procedimiento llamado “pa_empleados_hijos” si existe.
7. Cree un procedimiento almacenado llamado “pa_empleados_hijos” que
seleccione los nombres, apellidos, cantidad de hijos de los empleados con hijos
8. Ejecute el procedimiento anterior
9. Actualice la cantidad de hijo de algún empleado sin hijo y vuelva a ejecutar el
procedimiento para verificar que ahora si aparece en la lista.
Eliminar
Los procedimientos almacenados se eliminan con “drop procedure”
Si el procedimiento que se quiere eliminar no existe, aparece un error, para evitarlo , se
puede emplear la siguiente sintaxis.
Ejemplo
Eliminar, si existe, el procedimeinto “pa_libros_autor”, si no existe, se mostrará un
mensaje.
“Drop procedure” puede abrebiarse como “drop proc”
Es recomendable ejecutar el procedimiento almacenado del sistema
“sp_depends”
para ver si algun objeto depende del procedimiento que deseamos eliminar.
o Asi se podria eliminar una tabla de la cual dependa un procedimiento,
esto SQL Server los permite pero al ejecutar el procedimiento, aparecera
un mensaje de error porque la tabla refernciada no existe.
Parámetros de entrada y salida
Los procedimientos almacenados pueden recibir y devolver información, para ellos se
emplean parámetros, de entrada y salida.
Parámetros de entrada posibilitan pasar información a un procedimiento, para que un
procedimiento almacenado admita parámetros de entrada se deben declarar variables
como parámetros al crearlo
Sintaxis:
Los parámetros se definen luego del nombre del procedimiento, comenzando el nombre
con un signo arroba (@).
Cuando el procedimiento es ejecutad, deben explicitarse valores para cada uno de los
parámetros en el mismo orden que fueron definidos, a menos que se haya definido un
valor por defecto en tal caso pude omitirse. Pueden ser de cualquier tipo de datos
excepto cursor.
Ejemplo
Se crea un procedimiento que recibe el nombre del autor como parámetro para
mostrar todos los libros del autor solicitado.
El procedimiento se ejecuta colocando “execute” (exec) seguido del nombre del
procedimiento y un valor para el parámetro en este caso.
Crear un procedimiento que recibe 2 parámetro, el nombre de un aturo y el de
una editorial.
Se puede emplear patrones de búsqueda en la consulta que define el procedimiento
almacenado y utilizar comodines como valores por defecto.
Al ejecutar el procedimiento almacenado, se asume que es el primero
Ejecuta el procedimiento almacenado “pa_libros_autor_editorial3” enviando un valor
para el segundo parámetro, para el primero parámetro tomar el valor por defecto.
Ejercicio
Una empresa almacena los datos de sus empleados en una tabla llamada “empleados”
1. Eliminar la tabla si existe si no la creamos
2. Ingresamos algunos registros
3. Eliminar el procedimiento llamado “pa_empleados_sueldos” si existe.
4. Crear un procedimiento almacenado llamado “pa_empleado_sueldo” que
seleccione los sueldos de los empleados que tengan un sueldo superior o igual al
enviado como parámetro.
5. Ejecutar el procedimiento almacenado “pa_empleado_sueldo” con distintos
valores
6. Ejecutar el procedimiento alamacenado “pa_empleados_sueldo” sin parámetros
(mensaje de error).
7. Eliminar el procedimiento elmacenado “pa_empleado_actualizar_suueldo si
existe.
8. Cree un procedimiento almacenado llamado “pa_empleados_aztualizar_sueldo”
que actualice los sueldos iguales al enviado como primero parámetro con el
valor enviado como segundo parámetro.
9. Ejecute el procedimiento creado anteriormente y verificar si se ha ejecutado
correctamente
10. Ejecute el procedimiento “pa_empleados_actualizar_sueldo” enviando un solo
parámetro.
11. Ejecute el procedimiento “pqa_empleados_actualizar_sueldo” enviado en primer
lugar el parámetro @sueldonuevo y en segundo lugar @sueldoanterior
12. Verificar el cambio
13. Eliminar el procedimiento almacenado “pa_sueldototal” si existe.
14. Crear un procedimiento llamado “pa_sueldototal” que reciba el documento de un
empleado y muestre su nombre, apellido y el sueldo total (resultado de la suma
del sueldo y salario por hijo, que es de 200 si el sueldo es menos a 500 y 100, si
el sueldo es mayor o igual a 500). Colocar como valor por defecto para el
parámetro el patrón “%”.
15. Ejecutar el procedimiento anterior enviando diferentes valores
16. Ejecutar el procedimiento sin enviar parámetro que tome el valor por defecto.
Mostrar los 5 registros.
Parámetros de salida
Los procedimientos almacenados también pueden devolver información, usando
parámetros de salida. El valor se retorna a quien realizo la llamada con parámetros de
salida. Para que un procedimiento almacenado devuelva un valor se debe declarar una
variable con la palabra clave “output” al crear el procedimiento:
Sintaxis
Los parámetros de salida pueden ser de cualquier tipo de datos, excepto text, ntext e
image.
Ejemplo
Crear un procedimiento almacenado al cual se le envía 1 números y retorna el promedio
Al ejecutarse también se debe emplear el “output”
Ejemplo 2
Se creara un procedimiento almacenado que muestre los título, editorial y precio de los
libros de un determinado autor (enviando como parámetro de entrada ) y nos retorne la
suma y el promedio de los precios de todos los libros del autor enviado.
Ejecutamos el procedimiento y vemos el contenido de las variables en las que
almacenamos los parámetros de salida del procedimiento.