Transact SQL
Nombre del Docente:
Ing. Eugenio Enrique Díaz Lacayo
Contenido
• Objetivos de aprendizaje
• Actividad de inicio
• Introducción a Transact-SQL
• Modularidad y control en Transact-SQL
• Estructuras de control (IF, WHILE, CASE)
• Vistas
• Procedimientos almacenados
• Funciones
• Actividad de aprendizaje
• Conclusiones
• Bibliografía
6/10/2025 Diapositiva #: 2
Objetivos de aprendizaje
• Explicar el propósito de la modularidad en T-SQL
• Aplicar estructuras de control (IF, CASE, WHILE)
• Diseñar vistas para la simplificación de consultas
complejas
• Crear procedimientos almacenados para
automatización
• Desarrollar funciones personalizadas reutilizables
6/10/2025 Diapositiva #: 3
Actividad de inicio
-- Registrar tres pedidos -- Actualizar el estado de los
manualmente pedidos según su total
INSERT INTO Pedidos (id_cliente, UPDATE Pedidos
fecha_pedido, total, estado)
SET estado = 'Enviado'
VALUES (1, GETDATE(), 1200.50,
'Pendiente'); WHERE id_cliente = 1 AND total >=
1000;
INSERT INTO Pedidos (id_cliente,
fecha_pedido, total, estado) UPDATE Pedidos
VALUES (2, GETDATE(), 890.00, SET estado = 'Enviado'
'Pendiente'); WHERE id_cliente = 2 AND total >=
INSERT INTO Pedidos (id_cliente, 1000;
fecha_pedido, total, estado) UPDATE Pedidos
VALUES (3, GETDATE(), 1575.25, SET estado = 'Enviado'
'Pendiente');
WHERE id_cliente = 3 AND total >=
1000;
• ¿Qué pasaría si tuviéramos que modificar una parte de este
código en 50 consultas similares?
• ¿Cómo podríamos evitar repetir la misma lógica muchas veces?
• ¿Creen que SQL permite “agrupar” o “automatizar” partes de
código?
6/10/2025 Diapositiva #: 4
¿Qué es el Transact SQL?
• Es una implementación de SQL (Structured Query
Language) desarrollada por Microsoft y está
diseñada para extender el estándar SQL con
características y funcionalidades adicionales.
• Es una herramienta poderosa para trabajar con
bases de datos relacionales y permite desarrollar
aplicaciones y consultas complejas para extraer y
manipular información de manera eficiente.
• SQL ESTÁNDAR vs T-SQL
• SQL: Consultas básicas, INSERT, UPDATE, DELETE
• T-SQL: + Estructuras control + Procedimientos +
Funciones + Variables
6/10/2025 Diapositiva #: 5
Modularidad y control en Transact-SQL
• La modularidad en bases de datos permite dividir la
lógica en partes reutilizables, facilitando el
mantenimiento y la claridad del código.
• En Transact-SQL (T-SQL), esta modularidad se logra
mediante:
• Estructuras de control, que permiten definir el flujo lógico
del código (IF…ELSE, WHILE, CASE).
• Vistas, que encapsulan consultas complejas.
• Procedimientos almacenados, que agrupan instrucciones
para tareas específicas.
• Funciones, que devuelven valores calculados o conjuntos
de resultados.
• T-SQL combina el control del flujo y la
modularización del código para crear soluciones más
estructuradas y eficientes.
6/10/2025 Diapositiva #: 6
Estructuras de Control
• Las estructuras de control en SQL Server son
herramientas que permiten ejecutar bloques de
código en función de condiciones específicas o en
forma de bucles.
• Estas estructuras son esenciales para crear
procedimientos almacenados, funciones, y scripts
más complejos. En SQL Server, las principales
estructuras de control incluyen:
• IF...ELSE: Realiza una acción condicional en función
de una expresión.
• WHILE: Crea un bucle que se repite mientras se cumple
una condición.
• CASE: Evalúa una lista de condiciones y devuelve un
resultado.
• BEGIN...END: Define un bloque de instrucciones.
6/10/2025 Diapositiva #: 7
Estructuras de Control
• Ejemplo IF...ELSE: • Ejemplo CASE:
DECLARE @Total SELECT id_pedido,
total, estado,
DECIMAL(10,2) = 120;
CASE estado
WHEN 'Pendiente'
IF @Total >= 100 THEN 'En espera'
WHEN 'Pagado' THEN
PRINT('Pedido 'Listo para envío'
válido: aplica envío WHEN 'Enviado'
gratis.'); THEN 'En camino'
ELSE WHEN 'Cancelado'
THEN 'No se procesará'
PRINT('Pedido con
END AS
cargo de envío.'); descripcion_estado
FROM Pedidos;
6/10/2025 Diapositiva #: 8
Estructuras de Control
• Ejemplo WHILE
-- Procesar pedidos pendientes
DECLARE @contador INT = 1;
WHILE @contador <= 10
BEGIN
PRINT 'Procesando pedido: ' +
CAST(@contador AS VARCHAR);
SET @contador = @contador + 1;
END;
6/10/2025 Diapositiva #: 9
Funciones, Procedimientos y Vistas
• Las Funciones, Procedimientos Almacenados, y
Vistas en SQL Server son componentes importantes
para trabajar con datos de manera eficiente y
estructurada.
• Una vista es una consulta guardada que actúa como
una tabla virtual. Las vistas permiten simplificar
consultas complejas y proporcionar un nivel
adicional de seguridad o abstracción, ya que los
usuarios pueden consultar datos sin tener acceso
directo a las tablas subyacentes.
• Ventajas de usar vistas:
• Seguridad: Control de acceso a columnas
• Simplificación: Consultas complejas como tablas simples
• Mantenimiento: Cambios centralizados
• Abstracción: Ocultar estructura de tablas
6/10/2025 Diapositiva #: 10
📊📊 Vistas
• Ejemplo:
CREATE VIEW vw_VentasClientes AS
SELECT p.id_pedido, c.p_nombre + ' ' +
c.p_apellido AS Cliente,
p.fecha_pedido, [Link], [Link]
FROM Pedidos p
INNER JOIN Clientes c ON p.id_cliente =
c.id_cliente;
-- Uso de la vista
SELECT * FROM vw_VentasClientes WHERE estado
= 'Pagado';
6/10/2025 Diapositiva #: 11
¿Cuándo usar vistas?
• Use vistas cuando:
• Necesita simplificar consultas complejas
• Quiere controlar acceso a columnas específicas
• Desea reutilizar lógica de consulta en múltiples
lugares
• Frecuentemente unes varias tablas
• Las vistas actúan como “consultas guardadas”
que facilitan la lectura, seguridad y
mantenimiento del código.
6/10/2025 Diapositiva #: 12
⚙ Procedimientos almacenados
• Un procedimiento almacenado en el contexto de las
bases de datos es una colección de instrucciones SQL
predefinidas que se guardan en el sistema de gestión
de bases de datos (SGBD) para su posterior
ejecución. También se le conoce como rutina
almacenada.
• Son útiles para encapsular lógica de negocio, realizar
tareas repetitivas y mejorar el rendimiento, ya que
el código se compila una vez y luego se reutiliza.
6/10/2025 Diapositiva #: 13
⚙ Procedimientos almacenados
• CREATE PROCEDURE: Es la instrucción
que se utiliza para crear un nuevo
procedimiento almacenado en la base de
datos.
• nombre_procedimiento: Es el nombre
que se le asigna al procedimiento
almacenado.
• @parametro1, @parametro2, etc.: Son
los parámetros de entrada del
procedimiento almacenado. Pueden tener
un tipo de dato especificado y se utilizan
para recibir valores desde la llamada al
procedimiento almacenado.
• AS: Se utiliza para indicar el comienzo del
cuerpo del procedimiento almacenado.
• BEGIN y END: Encierran el bloque de
código del procedimiento almacenado.
• DECLARE: Se utiliza para declarar variables
locales que se utilizarán dentro del
procedimiento almacenado.
6/10/2025 Diapositiva #: 14
⚙ Procedimientos almacenados
• Ejemplo 1:
CREATE PROCEDURE sp_RegistrarPedido
@id_cliente INT,
@total DECIMAL(10,2)
AS
BEGIN
IF @total <= 0
RAISERROR('El total debe ser mayor a cero',16,1);
ELSE
INSERT INTO Pedidos (id_cliente, total, estado)
VALUES (@id_cliente, @total, 'Pendiente');
END;
-- Ejecutar el procedimiento
EXEC sp_RegistrarPedido @id_cliente = 5, @total = 250.75;
6/10/2025 Diapositiva #: 15
CREATE PROCEDURE (Procedimientos almacenados)
• Ejemplo 2:
6/10/2025 Diapositiva #: 16
CREATE PROCEDURE (Procedimientos almacenados)
• Ejemplo 3:
6/10/2025 Diapositiva #: 17
CREATE PROCEDURE (Procedimientos almacenados)
• Ejemplo 4:
6/10/2025 Diapositiva #: 18
CREATE PROCEDURE (Procedimientos almacenados)
• Ejemplo 5:
6/10/2025 Diapositiva #: 19
CREATE PROCEDURE (Procedimientos almacenados)
• Ejemplo 6:
6/10/2025 Diapositiva #: 20
¿Cuándo usar procedimientos almacenados?
• Use procedimientos almacenados cuando:
• Ejecuta múltiples operaciones DML (INSERT, UPDATE,
DELETE)
• Requiere control transaccional (BEGIN, COMMIT,
ROLLBACK)
• Implementa lógica de negocio compleja
• Necesita manejar parámetros de entrada y salida
• Busca optimizar rendimiento con código
precompilado
• Los procedimientos son ideales para automatizar
tareas y centralizar la lógica del negocio.
6/10/2025 Diapositiva #: 21
🔁🔁 Funciones
• En el contexto de las bases de datos y la programación,
una función es un bloque de código reutilizable que realiza
una operación específica y devuelve un valor o un
conjunto de valores.
• Existen funciones escalares (que devuelven un valor único)
y funciones de tabla (que devuelven una tabla).
• Las funciones se utilizan para encapsular lógica o cálculos
repetitivos y permiten su reutilización en diferentes partes
de una aplicación o consulta.
6/10/2025 Diapositiva #: 22
🔁🔁 Funciones
• Funciones escalares: Son funciones
que devuelven un único valor. Se
pueden utilizar en expresiones y
consultas para realizar cálculos o
manipulaciones en una columna de
datos y devolver un resultado.
Ejemplos de funciones escalares
incluyen SUM, LEN, LOWER, etc.
• Funciones de tabla: Son funciones
que devuelven un conjunto de filas
como resultado. Pueden utilizarse
en una consulta para generar una
tabla virtual que puede ser
manipulada o combinada con otras
tablas en la consulta principal.
Ejemplos de funciones de tabla
incluyen SELECT * FROM
[Link](), donde
MyFunction devuelve un conjunto
de filas.
6/10/2025 Diapositiva #: 23
🔁🔁 Funciones
• Ejemplo 1: Función escalar
CREATE FUNCTION fn_TotalPedido(@id_pedido INT)
RETURNS DECIMAL(10,2)
AS
BEGIN
DECLARE @resultado DECIMAL(10,2);
SELECT @resultado = SUM([Link] * [Link])
FROM DetallesPedidos d
INNER JOIN Productos pr ON d.id_producto = pr.id_producto
WHERE d.id_pedido = @id_pedido;
RETURN ISNULL(@resultado, 0);
END;
-- Uso de la función
SELECT id_pedido, dbo.fn_TotalPedido(id_pedido) AS TotalCalculado
FROM Pedidos;
6/10/2025 Diapositiva #: 24
CREATE FUNCTION (Funciones)
• Ejemplo 2: Función escalar
6/10/2025 Diapositiva #: 25
CREATE FUNCTION (Funciones)
• Ejemplo 3: Función escalar
6/10/2025 Diapositiva #: 26
CREATE FUNCTION (Funciones)
• Ejemplo 4: Función escalar
6/10/2025 Diapositiva #: 27
CREATE FUNCTION (Funciones)
• Ejemplo 5: Función lineal o de tabla
6/10/2025 Diapositiva #: 28
CREATE FUNCTION (Funciones)
• Ejemplo 6: Función lineal o de tabla
6/10/2025 Diapositiva #: 29
¿Cuándo usar funciones?
• Usar funciones cuando:
• Realiza cálculos o transformaciones de datos
• Reutiliza lógica en cláusulas SELECT o WHERE
• Necesita resultados dentro de otras consultas
• Requiere retornar valores únicos o tablas derivadas
• Las funciones son expresiones reutilizables que
devuelven resultados inmediatos dentro de las
consultas.
6/10/2025 Diapositiva #: 30
Tabla comparativa completa
PROCEDIMIENTOS
CARACTERÍSTICA VISTAS FUNCIONES
ALMACENADOS
Ejecutar lógica de Cálculos y
Propósito Consulta de datos
negocio transformaciones
Conjunto de filas (tabla Puede retornar Valor único (escalar) o
Retorno
virtual) múltiples resultados tabla
Parámetros No acepta Sí, de entrada/salida Sí, solo de entrada
Transacciones No permitidas Sí permitidas No permitidas
Solo SELECT (en algunas INSERT, UPDATE, Solo SELECT (dentro de
DML
vistas actualizables) DELETE, SELECT la función)
Uso en consultas Directo en FROM EXEC/EXECUTE En SELECT, WHERE, etc.
Ejecución Como tabla Comando EXEC Como expresión
Control de acceso a
Seguridad Permisos de ejecución Permisos de ejecución
columnas
Almacenamiento Definición, no datos Código compilado Código compilado
Automática al cambiar
Recompilación Manual o automática Manual
tablas
6/10/2025 Diapositiva #: 31
Actividad de aprendizaje
• Crear una solución modular basada en la base de
datos SistemaVentasDB.
1. CREAR VISTA “vw_ResumenPedidos”
• Mostrar: id_pedido, cliente, fecha, total, estado
• Incluir: JOIN entre Pedidos y Clientes
2. CREAR FUNCIÓN “fn_CalcularTotalPedido”
• Parámetro: @id_pedido INT
• Calcular: SUM(cantidad * precio) de DetallesPedidos
3. CREAR PROCEDIMIENTO “sp_NuevoPedido”
• Validar: cliente existe, total > 0
• Usar: RAISERROR para errores
• Insertar: pedido con estado ‘Pendiente’
4. MEJORAR PROCEDIMIENTO
• Usar función fn_CalcularTotalPedido
• Actualizar campo total automáticamente
6/10/2025 Diapositiva #: 32
Conclusiones
• La modularidad facilita el
mantenimiento y
reutilización
• Las estructuras de control
permiten lógica compleja
• Vistas = Simplificación y
seguridad
• Procedimientos =
Automatización y
rendimiento
• Funciones = Cálculos
reutilizables
• T-SQL extiende SQL con
capacidades de
programación
6/10/2025 Diapositiva #: 33
Bibliografía
• Libros:
• Ricardo, C. (2022).
Databases illuminated (4th
ed.). Jones & Bartlett
Learning.
• Petkovic, D. (2020).
Microsoft SQL Server 2019:
A beginner's guide (7th
ed.). McGraw-Hill.
• Silberschatz, A., Korth, H.
F., & Sudarshan, S. (2019).
Database system concepts
(7th ed.). McGraw-Hill.
• Kroenke, D., Auer, D.,
Vandenberg, S. (2017).
Database concepts (9th
ed.). USA: Pearson
Education, Inc.
6/10/2025 Diapositiva #: 34