Sie sind auf Seite 1von 35

SQL 2012

Sesin 02
Docente: Ing. Patricia Llallico
Agenda
Transacciones
Procedimientos Almacenados
Transacciones
Que es una transaccin
Una transaccin es un conjunto de operaciones que van
a ser tratadas como una nica unidad de trabajo.
La transaccin ms simple en SQL Server es una nica
sentencia SQL. Por ejemplo una sentencia como esta:

UPDATE Products SET UnitPrice=20 WHERE ProductName ='Chai'

Esta es una transaccin 'autocommit',


una transaccin autocompletada.
Tipos de transacciones
SQL Server funciona en los siguientes tres modos de
transaccin
Transacciones de confirmacin automtica
Transacciones explcitas
Transacciones implcitas
Transaccin Implcita
Comportamiento predeterminado por SQL Server.
Una transaccin se inicia automticamente cuando se
ejecutan determinadas instrucciones.
No se permiten transacciones anidadas.
La transaccin debe completarse explcitamente con
COMMIT o ROLLBACK TRANSACTION
Para activar el modo de trabajo con las transacciones
implcitas se ejecuta: SET IMPLICIT_TRANSACTIONS ON
Para desactivar las transacciones implcitas: SET
IMPLICIT_TRANSACTIONS OFF
Transaccin explicita
Las instrucciones de la transaccin se agrupan entre las
clusulas BEGIN TRANSACTION y COMMIT TRANSACTION
Cuando se produce el COMMIT, se hacen efectivos los
cambios en los ficheros de datos (.mdf y .ndf). Mientras
no se realiza el COMMIT las sentencias de los cambios
se guardan en el log de transacciones (.log).
Si una operacin fuese errnea, es posible hacer
ROLLBACK
Ejercicios
Ejecutar el script transaccion_1.sql
Transaccin explicita
Palabra Clave Que realiza
BEGIN TRANSACTION Establece el punto de partida de una
transaccin explcita.
ROLLBACK TRANSACTION Revierte la transaccin y pone los datos al
estado en que estaban justo antes del inicio
de la transaccin.
COMMIT TRANSACTION Finaliza la transaccin si no se han
encontrado errores
@@TRANCOUNT Devuelve el nmero de transacciones
activas de la conexin
Ejercicios
Ejecutar el script transaccion_2.sql y comparar con los
resultados del script anterior
Procedimientos
almacenados
Que es un procedimiento almacenado
Un procedimiento almacenado es una coleccin con nombre de
instrucciones de Transact-SQL que se almacena en el servidor.
Los procedimientos almacenados son un mtodo para encapsular
tareas repetitivas. Admiten variables declaradas por el usuario,
ejecucin condicional y otras caractersticas de programacin
muy eficaces.
Creacin de un procedimiento
almacenado
Sintaxis
USE database
GO
CREATE PROC [ EDURE ] nombreProcedimiento
AS instruccinSql [ ...n ]
Ejercicios
Ejercicio 01: Crear un procedimiento almacenado que enumera
todos los pedidos
atrasados de la base de datos Northwind (Archivo sp_01.sql)
Ejecucin de un procedimiento
almacenado
Para ejecutar un procedimiento almacenado puede emitir la
instruccin EXECUTE junto con el nombre del procedimiento
almacenado y de los parmetros.

Ejemplo:
EXEC OverdueOrders
Modificar un procedimiento
almacenado
Ejercicio 02: Modificar el procedimiento almacenado
OverdueOrders para seleccionar slo los nombres de determinadas
columnas en lugar de todas las columnas de la tabla Orders y para
ordenar el conjunto de resultados. (Archivo sp_02.sql)
Eliminar un procedimiento
almacenado
Use la instruccin DROP PROCEDURE para quitar procedimientos
almacenados
definidos por el usuario de la base de datos actual.
En este ejemplo se elimina el procedimiento almacenado
OverdueOrders.

USE Northwind
GO
DROP PROC dbo.OverdueOrders
GO
Parmetros de Entrada
Se comienza a implementar parmetros de entrada en
procedimientos almacenados definiendo el nombre del parmetro
as como su tipo de dato.

Se puede asignar opcionalmente un valor al parmetro de


entrada. Por ejemplo, se podra crear un procedimiento
almacenado que permita listar todos los clientes quienes viven
en un especifico cdigo zip.
Parmetros de Entrada
Usar La Siguiente Sintaxis Para Definir Un Parmetro:

CREATE PROCEDURE procedure_name


[@parameter_name data_type] [= default_value]
[WITH option]
AS
sql_statement [...n]
Parmetros de Entrada
En esta sentencia, reemplaze @parameter_name con el nombre
que desea asignar al parmetro, y data_type con el tipo de datos
(tal como char, varchar, etc). Se debera definir un valor por
defecto para el parmetro con la finalidad que el procedimiento
almacenado corra exitosamente en el evento si el usuario no
ingresa un valor.
Se puede usar tanto constantes (cadena de caracteres o valores
numricos) o null para el valor por defecto .
Parmetros de Entrada
Ejercicio 03: Crear el procedimiento almacenado Year to Year
Sales, que devuelve todas las ventas en un intervalo de fechas
determinado. (Archivo sp_03.sql)
Verificar valores para parmetros de
entrada
Si los procedimientos almacenados usan parmetros, se debera
incluir cdigo para estar seguros que estos parmetros tienen
valores.
Se puede verificar el error usando la sentencia IF .
Se puede usar la palabra clave RETURN para salir de un
procedimiento almacenado si un parmetro no tiene un valor
apropiado.
Verificar valores para parmetros de
entrada
Por ejemplo, se puede usar la siguiente sintaxis para verificar los valores para tus parmetros de
entrada:

CREATE PROCEDURE stored_procedure_name


@parameter data_type = value
AS
IF @parameter IS NULL
BEGIN
PRINT 'Message Line 1'
PRINT 'Message Line 2'
RETURN -- Ends running the stored procedure
END
SELECT statement
GO
Verificar valores para parmetros de
entrada
Ejercicio 04: Crear el procedimiento almacenado que valide el
parmetro de entrada identificador del producto. En caso el
identificador del producto sea nulo mostrar el mensaje Ingrese
el id del producto y finalice el procedimiento, caso contrario
retorne todos los productos. (Archivo sp_04.sql)
Parmetros de Salida
Use parmetros de salida para retornar un valor de un
procedimiento almacenado.
Se utilizar tpicamente los valores asignados a los parmetros
de salida en otros procedimientos almacenados.
Identifique un parmetro de salida agregando la palabra clave
OUTPUT a su definicin dentro del procedimiento almacenado.
Adems, debe tambin identificar el parmetro de salida como
parte de la declaracin Execute que utiliza para llamar a su
procedimiento almacenado.
Parmetros de Salida
CREATE PROCEDURE procedure_name
[ @parameter_name data_type] [= default_value] OUTPUT
[WITH option]
AS
SQL statement [...n]
Parmetros de Salida
Ejercicio 05: Crear un procedimiento almacenado con parmetros
de salida que muestren el numero de filas de la tabla de ordenes,
clientes y empleados. (Archivo sp_05.sql)
Ejecutar procedimiento almacenado
con parmetros de salida
Cuando invoca a un procedimiento almacenado que contenga
parmetros de salida, debe declarar las variables en las cuales
desea almacenar los parmetros de salida. Estas variables
pueden utilizar los mismos nombres que los parmetros de salida
o nombres diferentes.
Adems de tiene que especificar los nombres de los parmetros
de salida junto con la palabra clave OUTPUT cuando ejecute el
procedimiento almacenado.
Ejecutar un procedimiento
almacenado con parmetros de
salida
Por ejemplo para llamar al procedimiento almacenado
count_rows del ejemplo anterior, debe utilizar la siguiente
sintaxis:

DECLARE @order_count int, @cust_count int,@empl_count int


EXEC count_rows @order_count OUTPUT, @cust_count OUTPUT,
@empl_count OUTPUT
SELECT @order_count AS orden, @cust_count AS cliente,
@empl_count AS empleado
Sentencia RETURN
Use la sentencia RETURN para forzar una salida no condicional de
un procedimiento almacenado. Por ejemplo, por defecto, un valor
de retorno de cero (0) indica que el procedimiento almacenado
funcion con xito.
Sentencia RETURN
Ejercicio 06: Crear el procedimiento almacenado GetOrders que
recupera informacin de las tablas Orders y Customers
mediante la consulta de la vista Orders Qry. La instruccin
RETURN del procedimiento almacenado GetOrders devuelve el
nmero total de filas de la instruccin SELECT.
Sentencia RETURN
DECLARE @ReturnCustomer INT
EXECUTE @ReturnCustomer = GetOrders @CustomerID ='ALFKI'
-- Show the values returned.
PRINT 'Filas = ' + CAST(@ReturnCustomer AS CHAR(1))
GO
Ejercicios
Ejercicio 07: Crear un procedimiento almacenado que
devuelva el precio mayor y el precio menor de segn la
categora
Ejercicios
Ejercicio 08: Crear un procedimiento almacenado que
permite eliminar un cliente segn su identificador. Si
existe el cliente en la tabla ORDERS devuelve 1 (No se
puede eliminar) caso contrario devuelve 0 (Se elimin).

Das könnte Ihnen auch gefallen