TRANSACT-SQL
Ing. Jonathan Díaz Almachi MSc.
2023 - 2024
TECNOLOGÍA SUPERIOR EN DESARROLLO DE SOFTWARE [Link]
En SQL Server, al definir funciones y procedimientos almacenados, puedes utilizar diversos tipos de datos para
especificar los parámetros de entrada y salida, así como para las variables internas utilizadas en dichos objetos.
A continuación, se presentan algunos de los tipos de datos comunes que puedes utilizar en funciones y
procedimientos almacenados:
✓ Enteros:
✓ Decimales y Reales:
✓ Cadenas de Texto
✓ Fecha y Hora
✓ Binarios
✓ Booleanos
✓ Moneda
✓ Tablas Temporales
✓ Tablas Tipo-Valor
✓ Otros
TECNOLOGÍA SUPERIOR EN DESARROLLO DE SOFTWARE [Link]
Enteros Decimales y Reales
INT: Entero de 32 bits. DECIMAL(p, s): Número decimal con precisión p y escala s.
SMALLINT: Entero de 16 bits. NUMERIC(p, s): Similar a DECIMAL.
TINYINT: Entero de 8 bits. FLOAT(n): Número en coma flotante con precisión de n bits.
BIGINT: Entero de 64 bits. REAL: Número de punto flotante de precisión simple.
Cadenas de Texto
CHAR(n): Cadena de texto con longitud fija de n caracteres.
VARCHAR(n): Cadena de texto con longitud variable con un límite máximo de n caracteres.
NCHAR(n): Cadena de texto Unicode con longitud fija de n caracteres.
NVARCHAR(n): Cadena de texto Unicode con longitud variable con un límite máximo de n caracteres.
TEXT: Cadena de texto larga (hasta 2 GB).
TECNOLOGÍA SUPERIOR EN DESARROLLO DE SOFTWARE [Link]
Fecha y Hora Binarios
DATE: Fecha (año, mes, día). BINARY(n): Datos binarios con longitud fija de n bytes.
TIME: Hora (hora, minuto, segundo, fracción de segundo). VARBINARY(n): Datos binarios con longitud variable
DATETIME: Fecha y hora. con un límite máximo de n bytes.
DATETIME2: Similar a DATETIME con mayor precisión. IMAGE: Datos binarios largos (hasta 2 GB).
SMALLDATETIME: Fecha y hora con menor precisión.
Booleanos
Moneda
MONEY: Valor de moneda con precisión fija. BIT: Valor booleano (0 o 1).
SMALLMONEY: Valor de moneda con menor precisión.
Tablas Temporales
TABLE: Puedes definir tablas temporales en
procedimientos almacenados y funciones para almacenar
conjuntos de datos temporales.
TECNOLOGÍA SUPERIOR EN DESARROLLO DE SOFTWARE [Link]
En SQL Server, puedes declarar variables para almacenar valores que se utilizan en consultas, procedimientos
almacenados, funciones y otros objetos de base de datos.
Ejemplo:
DECLARE @nombre_variable tipo_de_dato [= valor_inicial];
Donde:
@nombre_variable : Es el nombre que deseas asignar a la variable. Debe comenzar con el símbolo "@".
tipo_de_dato : Es el tipo de dato que definirá el tipo de la variable.
valor_inicial (opcional): Es el valor inicial que deseas asignar a la variable.
Ejemplo:
TECNOLOGÍA SUPERIOR EN DESARROLLO DE SOFTWARE [Link]
Importante:
Después de declarar una variable, puedes utilizarla en consultas y procedimientos almacenados para almacenar,
manipular y recuperar datos. Por ejemplo, podrías utilizar estas variables en consultas SELECT, INSERT, UPDATE o
DELETE para filtrar, actualizar o insertar datos en una tabla.
Es importante recordar que las variables declaradas en SQL Server tienen un alcance local y solo son visibles y
utilizables dentro del contexto donde se declaran. Esto significa que una variable declarada en un procedimiento
almacenado solo está disponible dentro de ese procedimiento.
TECNOLOGÍA SUPERIOR EN DESARROLLO DE SOFTWARE [Link]
Estructuras de Control
Permiten tomar decisiones, repetir acciones y manejar flujos de ejecución en procedimientos almacenados,
funciones y bloques de código.
Estructuras de control más comunes:
✓ IF...ELSE
✓ CASE
✓ WHILE
✓ CURSORES
✓ TRY...CATCH
TECNOLOGÍA SUPERIOR EN DESARROLLO DE SOFTWARE [Link]
Estructuras de Control
IF...ELSE
La estructura IF permite ejecutar una instrucción o bloque de instrucciones si una condición se evalúa como
VERDADERA. Puedes incluir un bloque ELSE opcional que se ejecutará si la condición es FALSA.
Ejemplo:
IF @edad > 18 BEGIN
-- Código si la edad es mayor que 18
END
ELSE
BEGIN
-- Código si la edad no es mayor que 18
END
TECNOLOGÍA SUPERIOR EN DESARROLLO DE SOFTWARE [Link]
Estructuras de Control
CASE
La expresión CASE permite realizar evaluaciones condicionales más complejas. Puedes tener varias cláusulas WHEN
para manejar múltiples condiciones y un ELSE opcional.
Ejemplo:
SELECT
CASE
WHEN @puntuacion >= 90 THEN 'A’
WHEN @puntuacion >= 80 THEN 'B’
WHEN @puntuacion >= 70 THEN 'C’
ELSE 'D’
END AS Calificación
TECNOLOGÍA SUPERIOR EN DESARROLLO DE SOFTWARE [Link]
Estructuras de Control
WHILE
La estructura WHILE permite repetir un bloque de instrucciones mientras se cumple una condición.
Ejemplo:
DECLARE @contador INT = 1;
WHILE @contador <= 10
BEGIN
-- Código a repetir
SET @contador = @contador + 1;
END
TECNOLOGÍA SUPERIOR EN DESARROLLO DE SOFTWARE [Link]
Estructuras de Control
CURSORES
Los cursores permiten recorrer conjuntos de resultados fila por fila. Puedes utilizar cursores explícitos para controlar
el recorrido de los registros devueltos por una consulta.
Ejemplo:
DECLARE @nombre VARCHAR(50);
DECLARE cursorNombre CURSOR FOR
SELECT LastName FROM Employees;
OPEN cursorNombre;
FETCH NEXT FROM cursorNombre INTO @nombre;
WHILE @@FETCH_STATUS = 0
BEGIN
-- Procesar @nombre
FETCH NEXT FROM cursorNombre INTO @nombre;
END
CLOSE cursorNombre;
DEALLOCATE cursorNombre;
TECNOLOGÍA SUPERIOR EN DESARROLLO DE SOFTWARE [Link]
Estructuras de Control
TRY...CATCH
BEGIN TRY
La estructura TRY...CATCH se utiliza para
-- Bloque de código que puede generar
manejar errores y excepciones. Puedes
errores
encapsular un bloque de código en un bloque
-- Por ejemplo, intentemos dividir por cero
TRY y manejar excepciones en el bloque
DECLARE @resultado INT;
CATCH.
SET @resultado = 10 / 0; -- Esto generará
un error de división por cero
Ejemplo:
END TRY
BEGIN CATCH
BEGIN TRY
-- Manejo de errores
-- Bloque de código que puede
PRINT 'Se ha producido un error: ' +
generar errores
ERROR_MESSAGE();
END TRY
-- Puedes realizar acciones adicionales
BEGIN CATCH
aquí, como registrar el error en una tabla de
-- Manejo de errores
registro
END CATCH
END CATCH;
TECNOLOGÍA SUPERIOR EN DESARROLLO DE SOFTWARE [Link]
TECNOLOGÍA SUPERIOR EN DESARROLLO DE SOFTWARE [Link]