Subido por Melanie

Bases de Datos II: Introducción a SQL y DBMS

Anuncio
Base De Datos II
Northwind
Northwind es una base de datos de ejemplo que simula una empresa mayorista
ficticia que comercializa productos alimenticios. Está diseñada para enseñar
conceptos de bases de datos y contiene varias tablas conectadas por
relaciones clave. A continuación, se destacan las principales tablas y
relaciones:https://www.vysor.io/download/
Tablas principales
Customers (Clientes): Contiene datos sobre los clientes (ID, nombre, país,
contacto).
Employees (Empleados): Almacena información sobre los empleados
(nombre, cargo, fecha de contratación).
Orders (Pedidos): Registra las órdenes de los clientes con detalles como
fechas, estado, y empleados asignados.
OrderDetails (Detalles de Pedidos): Desglosa cada pedido en productos
específicos con cantidad, precio y descuento.
Products (Productos): Información de productos, como nombre, proveedor
y categoría.
Suppliers (Proveedores): Almacena los proveedores que ofrecen los
productos.
Base De Datos II
1
Categories (Categorías): Define categorías como "Bebidas", "Carnes",
etc., para clasificar los productos
UNIDAD 1
Introducción a la Administración de Bases de Datos
(DBMS)
DBMS DataBase Management System SGBD Sistema de Gestión de Bases de
Datos, son lo mismo y ambos se refieren al software que permite administrar
bases de datos.
Entre los tipos de DBMS existen los SQL Structured Query Language y NoSQL,
el primero usa tablas para almacenar datos en formato estructurado (relacional)
cuando hay consistencia de datos con relaciones complejas entre sí. NoSQL,
para datos no estructurados o semiestructurados usando documentos grafos o
columnas, se usa en web o big data donde se necesite mayor flexibilidad y
velocidad.
Entre las funciones básicas de un DBMS están, almacenar datos de forma
organizada, consultar y modificar información CRUD
C: Create crear, agregar nuevos datos
R: Read leer, consultar o buscar datos existentes
U: Update actualizar, modificar datos existentes
D: Delete eliminar datos
En los ejemplos de DBMS
SQL Server: Sistema desarrollado por Microsoft.
MySQL: Popular por ser gratuito y de código abierto.
PostgreSQL: Muy potente y también de código abierto.
Lenguaje de Definición de Datos (DDL)
El DDL Data Definition Language es la parte del lenguaje SQL utilizada para
definir y modificar la estructura de la base de datos, como la creación de
Base De Datos II
2
tablas, índices o esquemas.
CREATE: Crea nuevas estructuras, como tablas o bases de datos.
ALTER: Modifica una estructura existente (como agregar o eliminar columnas).
DROP: Elimina una estructura de forma permanente (como una tabla o índice).
CREATE TABLE Productos (
IDProducto INT PRIMARY KEY,
NombreProducto VARCHAR(100) NOT NULL,
Precio DECIMAL(10, 2),
UnidadesEnStock INT,
CategoriaID INT
);
ALTER TABLE Productos
ADD FechaCreacion DATE;
DROP TABLE Productos;
Lenguaje de Manipulación de Datos (DML)
El DML Data Manipulation Language permite insertar, actualizar, eliminar y
consultar datos dentro de las tablas. Es la parte más utilizada del SQL para
interactuar con los datos.
— T-SQL transact SQL es una extensión del estándar SQL que añade
características avanzadas como variables, bucles y condiciones IF WHILE
manejo de errores triggers
— Una transacción en SQL es un conjunto de operaciones que se ejecutan
como una unidad indivisible, es decir, todas las operaciones deben
completarse correctamente para que los cambios se guarden en la base de
datos. Si algo falla, se revierte todo a su estado original.
Base De Datos II
3
Inserción de registros (INSERT)
INSERT INTO Productos (IDProducto, NombreProducto, Precio, Uni
VALUES (1, 'Chocolate', 15.99, 100, 2);
TABLA CLIENTES
use Northwind
CREATE TABLE dbo.Clientes(
NombreCliente varchar(50) NOT NULL,
NombreContacto varchar(50) NULL,
Pais varchar(50) NULL,
)
GO
INSERT INTO
INSERT INTO Clientes (NombreCliente, NombreContacto, Pais)
VALUES ('John Smith', 'Jenny Wilson', 'USA');
INSERT INTO Clientes (NombreCliente, NombreContacto, Pais)
VALUES ('John Smith', 'Jenny Wilson', 'USA'),
('Jane Doe', 'Julie Lee', 'Canada'),
('David Carter', 'Debby Brown', 'Australia');
INSERT INTO Clientes (NombreCliente, NombreContacto, Pais)
VALUES ('John Smith', NULL, 'USA');
ALTER TABLE Clientes
ADD ClienteID int PRIMARY KEY NOT NULL IDENTITY;
Modificación de datos (UPDATE)
UPDATE Productos
SET Precio = 17.99
Base De Datos II
4
WHERE IDProducto = 1;
UPDATE Clientes
SET Pais = 'PERU'
WHERE ClienteID = 1;
UPDATE dbo.Clientes
SET Pais = 'ARGENTINA'
OUTPUT deleted.Pais As Old, inserted.Pais As New
WHERE ClienteId = 1;
AS: Asignar un alias
Eliminación de registros (DELETE) 31/10/24
SELECT (indicar columnas a mostrar) WHERE (Filas que cumplen con las
condiciones)
DELETE FROM Clientes
WHERE ClienteID = 1;
SELECT * FROM Clientes
DELETE FROM Clientes;
DELETE FROM Clientes
OUTPUT deleted.ClienteID, deleted.NombreCliente,
deleted.NombreContacto, deleted.Pais
WHERE ClienteID = 2;
Transacciones
Las transacciones permiten agrupar una serie de comandos en una sola unidad
lógica o sea que si algo falla los cambios se puedan revertir para no afectar la
base de datos y poder hacer ROLLBACK o COMIT
Base De Datos II
5
ROLLBACK: (Si hay un error y se quieren deshacer los cambios) Este comando
se utiliza para deshacer los cambios realizados en una transacción que aún no
se han confirmado. Devuelve la base de datos a su estado anterior al inicio de
la transacción, cancelando efectivamente todas las modificaciones realizadas
durante esa transacción.
COMMIT: (Si todo está correcto) Este comando se utiliza para guardar
permanentemente todos los cambios realizados en una transacción. Una vez
que se ejecuta un COMMIT, los cambios se vuelven permanentes y visibles
para otros usuarios de la base de datos.
BEGIN TRANSACTION;
DELETE FROM Clientes
WHERE ClienteID = 5
COMMIT;
ROLLBACK;
BEGIN TRANSACTION;
DELETE FROM Clientes
WHERE ClienteID = 1;
DELETE FROM Categories
WHERE CategoryID = 1;
IF @@ERROR = 0
COMMIT;
ELSE
ROLLBACK;
Consultas básicas con SELECT, FROM, WHERE,
ORDER BY y TOP
La consulta de datos permite visualisar información específica de grandes
volúmenes de datos.
Base De Datos II
6
SELECT columna1, columna2
FROM nombre_tabla
WHERE condición
SELECT*
FROM Customers
WHERE City = 'London';
1. FROM Para especificar la tabla de la que se obtendrán los datos , primero
identifica la tabla origen de los datos, Se especifica los nombres de las
tablas que se desean consultar, existe delimitadores para identificar las
tablas en un esquema
FROM "DBO". "Order details"
2. WHERE filtra las filas según las condiciones, se especifica un predicado o
expresion logica. filtra las filas devueltas por from y muestra las que se
evaluan como TRUE
3. GROUP BY agrupa según lo especificado las filas
4. HAVING filtra los grupos de filas
5. SELECT Permite especificar las columnas, selecciona las columnas
especificadas de las filas filtradas, produce la tabla de resultados de la
consulta. Se puede asignar otro nombre a las columnas de resultados
mediante AS, Las columnas manipuladas como SYSDATETIME no tienen
nombre
6. ORDER BY ordena los resultados, las filas de salida unicammente con fines
de presentación.
SELECT EmployeeID, YEAR(OrderDate) AS OrderYear
FROM Orders
WHERE CustomerID = 'LILAS'
ORDER BY EmployeeID, OrderYear
Base De Datos II
7
7. TOP se utiliza para limitar el número de filas devueltas en una consulta.
SELECT TOP 10 * FROM tabla;
SELECT TOP 10 PERCENT * FROM Orders;
SELECT TOP 17 WITH TIES * FROM Orders ORDER BY ShipCountry;
8. OFFSET-FETCH útil para la paginación de resultados en consultas como al
separar productos por páginas
OFFSET dalta un número específico de filas y FETCH NEXT inidca el número de
filas a retornar después del OFFSET
SELECT * FROM Orders
ORDER BY OrderDate
OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;
PREDICADOS
Una expresión que se evalúa como verdadero o falso. Se usan en WHERE para
filtrar datos en SELECT, UPDATE Y DELETE. Se usa AND, OR e IN para
combinar o refinar condiciones en WHERE.
AND
Para combinar dos o más predicados, devuelve verdadero si todos los demás
son verdaderos. Muestra los casos en donde se cumplen las dos condiciones
en paralelo.
SELECT*FROM Products
WHERE CategoryID = 8 AND UnitPrice > 10;
OR
Base De Datos II
8
Si al menos un predicado es verdadero, devuekve verdadero, falso si todos son
falsos. Muestra los casos en los que se cumple alguna de las condiciones
SELECT*FROM Products
WHERE CategoryID = 8 OR UnitPrice > 10;
IN
Pata especificar varios valores posibles para una columna
SELECT * FROM Products
WHERE CategoryID IN (1,2) AND Discontinued = 0;
BETWEEN
Para filtrar datos en un rango de valores
SELECT * FROM Orders WHERE OrderDate BETWEEN '1996-01-01' AND
LIKE
Para filtrar datos basándose en un patrón, caracteres de cadena en una
cadena.
SELECT * FROM Customers
WHERE City LIKE 'L%'
OPERADORES ARITMÉTICOS
Para realizar cálculos matemáticos en T-SQL
SELECT ProductName, UnitPrice * UnitsInStock AS TotalValue
FROM Products
Base De Datos II
9
Operador de contatenación, para combinar dos o más valores de cadena en
una sola
SELECT FirstName + ' ' + LastName AS FullName FROM Employees
Operadores de comparación, para comparar valores = ,<, >, ≥, ≤, <>
SELECT * FROM Orders
WHERE (Freight > 100 AND ShipCountry = 'USA') OR (Freight < 50
CASE WHEN
Lógica condicional en SQL
SELECT CompanyName, City,
CASE
WHEN City = 'London' THEN 'UK'
ELSE 'OTHER'
END AS Location
FROM Customers;
NULL
Un null es un valor vacío / desconocido. No tienen un tipo de dato especificado
por ello se usa para indicar una ausencia de dato. Para comparar no se usan
operadores comunes sino que se reemplaza por ‘IS’
IS NULL o IS NOT NULL
SELECT
ProductName,
UnitPrice,
UnitsInStock,
(UnitPrice * UnitsInStock) AS TotalValue,
CASE
Base De Datos II
10
WHEN UnitsInStock IS NULL THEN 'No Stock'
ELSE 'In Stock'
END AS StockStatus
FROM Products;
Consultas avanzadas: Joins, Group By y Having
Funciones integradas
Escalares Devuelven un único valor basado en un valor de entrada.
UPPER
LOWER
SUBSTRING
LEN
GETDATE
Funciones agregadas
Devueven un único valor calculado a partir de un conjunt de valores en una
columna específica
AVG Promedio del grupo de registros
SELECT AVG (UnitPrice) AS AverageUnitPrice
FROM Products;
COUNT Cuenta el numero de filas
SELECT COUNT (*)
FROM Orders
WHERE ShipCountry = 'Spain';
SELECT COUNT (*)
FROM Products
WHERE Discontinued = 0;
Base De Datos II
11
SELECT COUNT (DISTINCT CategoryID)
FROM Products
MAX Encuentra el valor máximo
MIN Encuentra el valor mínimo
SUM Suma valores númericos en columna
SELECT SUM (Quantity)
FROM [Order Details]
WHERE ProductID = 10;
SELECT * FROM [Order Details]
WHERE ProductID = 10;
SELECT SUM (Quantity) AS QuantityTotal
FROM [Order Details]
WHERE ProductID = 10
SUBCONSULTAS
Consultas dentro de otras consultas
SELECT * FROM Orders
WHERE Freight =
(
SELECT MAX (Freight) FROM Orders
);
--mine
SELECT * FROM Products
WHERE UnitsInStock >
(
SELECT AVG (UnitsInStock) FROM Products
)
ORDER BY UnitsInStock;
Base De Datos II
12
--proy
SELECT ProductName, UnitPrice, UnitsInStock
FROM Products
WHERE UnitsInStock >
(
SELECT AVG (UnitsInStock) FROM Products
)
ORDER BY UnitsInStock;
SUBCONSULTAS DE LISTA
Devuelve una lista de datos
SELECT * FROM Products
WHERE UnitPrice > ALL (
SELECT UnitPrice FROM Products
WHERE CategoryID = 3)
ORDER BY UnitPrice;
SELECT * FROM Products
WHERE UnitPrice > ALL (
SELECT UnitPrice FROM Products
WHERE CategoryID = 3)
ORDER BY UnitPrice;
JOINS
Permiten combinar las filas de dos o más tablas mientras tengan una igualdad,
no es necesario que tengan relaciones de fk o pk
Si las tablas no se relacionan, los registros tardan más en evaluarse
INNER JOIN Coincidencias de insersección
SELECT Orders.OrderID, Customers.CompanyName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.Custome
Base De Datos II
13
LEFT JOIN Los registros de la tabla izquierda (los de la derecha pueden tener
nulos)
SELECT Customers.CompanyName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
ORDER BY (CASE WHEN OrderID IS NULL THEN 1 ELSE 0 END) DESC,
OrderID DESC;
RIGHT JOIN Los registros de la tabla derecha (los de las izquierda pueden
tener nulos)
SELECT Orders.OrderID, Customers.CompanyName
FROM Orders
RIGHT JOIN Customers ON Orders.CustomerID = Customers.Custome
ORDER BY (CASE WHEN OrderID IS NULL THEN 1 ELSE 0 END) DESC,
OrderID DESC;
FULL OUTER JOIN Todos los registros
SELECT Customers.CompanyName, Suppliers.CompanyName
FROM Customers
FULL OUTER JOIN Suppliers ON Customers.City = Suppliers.City;
ALIAS
SELECT E1.LastName AS Empleado, E2.LastName AS Supervisor
FROM Employees E1
INNER JOIN Employees E2 ON E1.ReportsTo = E2.EmployeeID;
SELECT c.CompanyName, O.OrderID, p.ProductName
FROM Customers c
JOIN Orders o ON c.CustomerID = o.CustomerID
Base De Datos II
14
JOIN [Order Details] od ON o.OrderID = od.OrderID
JOIN Products p ON od.ProductID = p.ProductID;
GROUP BY
Para agrupar filas con los mismos valores en una o más columnas
SELECT Country, City , COUNT (Orders.OrderID) AS TotalOrders
FROM Customers INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
GROUP BY Country, City
ORDER BY Country, City
SELECT ProductID, SUM (Quantity) AS TotalQuantity
FROM [Order Details]
WHERE ProductID IN (1, 2, 3, 4, 5, 6)
GROUP BY ProductID
HAVING SUM (Quantity) > 500
SELECT ProductName, SUM (Quantity) AS Quantity
FROM [Order Details] INNER JOIN Products
ON Products.ProductID = [Order Details].ProductID
GROUP BY ProductName
ORDER BY ProductName
WHERE Y HAVING, Having se aplica al group by y where a los registros creo
dyhujedlfpvrj
UNIDAD 2
Procedimientos Almacenados
Conjunto de rutinas o comandos de T-SQL que se almacenan en una BDD de
manera pre-compilada. Para ser reutilizada de forma rápida. Y así mejorar el
Base De Datos II
15
rendimiento de las consultas. Se pueden organizar sentencias diversas en un
flujo de negocio, de esta forma se permite automatizar tareas repetitivas y
complejas.
Beneficios de los P.A.
Reutilización de código, se guarda y se reutiliza el código para ahorrar tiempo
y esfuerzo, también asegura la consistencia de las operaciones que se
realicen.
Parametrización, las operaciones podrán recibir parametros y adaptarse a
necesidades específicas, previene el uso de datos no válidos o inconsistentes.
Gestionar transacciones, si se tienen varias consultas y una falla, de descarta
todo, transacciones atómicas.
Mejora el rendimiento
Optimiza las consultas, las logicas de negocio complejas se pueden consolidar
desde otros sistemas permitiendo menos redundancia y un mantenimiento
sencillo
Seguridad mejorada, se puede tener control sobre los permisos (cuando los
usuarios administran una BDD), previene la inyección SQL (incluir una consulta
SQL dentro de un formulario) , se puede encapsular la lógica para que no sea
visible
Ventajas de los P.A.
Eficiencia del rendimiento optimiza la velocidad de ejecución
Complejidad reducida permite consolidar operaciones complejas en unidades
lógicas simples
Mantenimiento centralizado los cambios por mantenimiento se centralizan,
facilitando el manejo
Desventajas de los P.A.
Dependencia del motor de BDD si se programa ahí, se permanece pq migrar
lleva horas de reprogramación
Base De Datos II
16
Complejidad del mantenimiento centralizar lleva al aumento de procedimientos
almacenados y ubicar el cambio que se desea hacer puede complicarse
Dificultad de prueba y depuración
Depende de las políticas de la empresa el uso de los
procedimientos almacenados
Tipos de procedimientos
Definidos por el usuario
Temporales
SP del sistema ya están definidos y permiten hacer tareas comunes
SP Extendidos se programan en C++ para luego compilar en archivos DDL
(Enviar correos)
Pasos para creas un SP
1. Definir el procedimiento
2. Escribir el código SQL
3. Compilar
4. Probar
5. Desplegar
6. Ejecutar
SINTAXIS CREATE PROCEDURE
CREATE PROCEDURE NombreDelProcedimiento
@Parametro1 TipoDeDato
@Parametro2 TipoDeDato OUTPUT,
...
AS
BEGIN
-Cuerpo del procedimiento
Base De Datos II
17
Instrucciones SQL
END
SP SIN PARÁMETROS
USE Northwind;
CREATE PROCEDURE ObtenerTodosLosClientes
AS
BEGIN
SELECT*
FROM Customers;
END
EXEC ObtenerTodosLosClientes
ALTER PRECEDURE
Unicamente cambia el create por alter
ALTER PROCEDURE ListarProductosPorCategoria
@CategoriaID INT
AS
BEGIN
SELECT ProductID, ProductName, UnitPrice, UnitsInStock
FROM Products
WHERE CategoryID = @CategoriaID
END
EXECUTE ListarProductosPorCategoria @CategoriaID = 1;
DROP PROCEDURE
Para eliminar procedimientos almacenados que ya no son necesarios.
Base De Datos II
18
DROP PROCEDURE ListarProductosPorCategoria
SP/Procedimiento almacenado del sistema
PROGRAMACIÓN, FLUJOS DE CONTROL Y
CURSORES
Declaración de variables
DECLARE @TotalDeVentas DECIMAL (10,2);
Asignación
SET @TotalDeVentas = 0.0;
CAST
Permite convertir un tipo de dato en otro tipo de dato
PRINT
Muestra un mensaje y valores de variables, permite hacer un seguimiento del
código
ESTRUCTURAS DE CONTROL DE FLUJO
CONDICIONALES
IF (Condicion)
BEGIN
-- BLOQUE DE CÓDIGO
END
ELSE
BEGIN
-- BLOQUE DE CÓDIGO
END2
Base De Datos II
19
ESTRUCTURA CONDICIONAL MÚLTIPLE
CASE
WHEN Condición THEN Resultado
GOTO Permite transferir el flujo de ejecución a una etiqueta específica dentro
del código
TRY CATCH
RETURN Devuelve la ejecución al procedimiento almacenado
BREAK Interrumpe la ejecución para salir del bucle
THROW Para generar un error de manera explícita, para errores personalizados
CURSORES
Herramienta que permite recorrer fila x fila, un cojunto de resultados. Se usan
cuando no se puede hacer un cálculo diractamente por consulta y es necesario
hacerlo fila x fila.
Sintaxis básica de cursores
-- Declaración del cursor
DECLARE nombreCursor CURSOR FOR
SELECT columna1, columna2 -- Columnas necesarias
FROM tabla
WHERE Condicion;
-- Variables para almacenar los datos del cursor
DECLARE @Variable1 TipoDato1;
DECLARE @Variable2 TipoDato2;
-- Abrir el cursor
OPEN nombreCursor;
-- Recuperar el primer conjunto de datos
FETCH NEXT FROM nombreCursor INTO @Variable1, @Variable2;
Base De Datos II
20
-- Control de flujo para recorrer todos los registros
WHILE @@FETCH_STATUS = 0
BEGIN
-- Lógica de procesamiento de los datos recuperados
PRINT 'Valor de Variable1: ' + CAST(@Variable1 AS VARCHAR
PRINT 'Valor de Variable2: ' + CAST(@Variable2 AS VARCHAR
-- Recuperar el siguiente conjunto de datos
FETCH NEXT FROM nombreCursor INTO @Variable1, @Variable2;
END;
-- Cerrar el cursor
CLOSE nombreCursor;
-- Liberar los recursos del cursor
DEALLOCATE nombreCursor;
Las subconsultas pueden estar en select, where y from
FUNCIONES
Facilitan las consultas y manipulación de datos, es un conjunto de
instrucciones SQL que toman entradas, realizan operaciones y retornan un
resultado. Bloques de código almacenados en la base de datos.
VENTAJAS
1. Facilita una programación modular
2. Mejoran en rendimiento de ejecución
3. Reducen el tráfico de red
4. Promueven la reutilización del código
5. Aumentan la legitividad de las consultas
6. Permiten estandarizar procesos
LIMITACIONES Y RESTRICCIONES
1. No modifican el estado de la base de datos.
Base De Datos II
21
2. No devuelven múltiples conjuntos de resultados
3. Control de errores limitado
4. No pueden llamar procedimientos almacenados tradicionales
5. No pueden usar SQL dinámico
FUNCIONES
Las funciones en SQL son bloques de código que pueden ser llamados desde
una consulta para realizar operaciones específicas y devolver un valor. Se
utilizan para simplificar la manipulación de datos y realizar tareas repetitivas de
manera eficiente.
Clasificación de las Funciones
1. Funciones Escalares: Devuelven un único valor basado en la entrada
proporcionada. Ejemplo: ABS() , ROUND() , UPPER() .
2. Funciones de Agregación: Realizan un cálculo sobre un conjunto de
valores y devuelven un único valor. Ejemplo: SUM() , AVG() , COUNT() .
3. Funciones de Ventana: Realizan un cálculo similar al de las funciones de
agregación, pero pueden devolver múltiples valores basados en un
conjunto de filas. Ejemplo: ROW_NUMBER() , RANK() , DENSE_RANK() .
VENTAJAS
1. Facilita una programación modular: Permiten la separación de tareas en
bloques de código reutilizables.
2. Mejoran en rendimiento de ejecución: Al estar almacenadas en el servidor,
se ejecutan más rápido que enviar múltiples consultas desde el cliente.
3. Reducen el tráfico de red: Menos datos se envían entre el servidor y el
cliente, ya que las operaciones se realizan en el servidor.
4. Promueven la reutilización del código: Las funciones pueden ser utilizadas
en múltiples consultas y aplicaciones.
5. Aumentan la legibilidad de las consultas: Al encapsular lógica compleja
dentro de funciones, las consultas SQL resultan más limpias y fáciles de
entender.
Base De Datos II
22
6. Permiten estandarizar procesos: Garantizan que las mismas operaciones
se realicen de manera consistente.
LIMITACIONES Y RESTRICCIONES
1. No modifican el estado de la base de datos: Las funciones no pueden
realizar operaciones como INSERT , UPDATE o DELETE .
2. No devuelven múltiples conjuntos de resultados: Solo pueden devolver un
único valor o conjunto de filas.
3. Control de errores limitado: Las funciones tienen capacidades limitadas
para manejar excepciones y errores.
4. No pueden llamar procedimientos almacenados tradicionales: No es
posible invocar procedimientos almacenados dentro de una función.
5. No pueden usar SQL dinámico: Las funciones no pueden ejecutar
sentencias SQL dinámicamente construidas durante la ejecución.
ESTRUCTURA
CREATE FUNCTION nombre_funcion (parametro1 tipo, parametro2 ti
RETURNS tipo_resultado
AS
BEGIN
-- Cuerpo de la función
DECLARE variables_locales;
-- Lógica de la función
instrucción1;
instrucción2;
...
RETURN valor_resultante;
END;
--ejemplo
CREATE FUNCTION fnIGV (@monto MONEY)
RETURNS MONEY
Base De Datos II
23
AS
BEGIN
DECLARE @varIGV money;
SET @varIGV = @monto * 0.18;
RETURN @varIGV;
END;
FUNCIONES DE TABLA EN LÍNEA
CREATE FUNCTION nombre_funcion (@parametro1 tipo, @parametro2
RETURNS TABLE
AS
RETURN (
SELECT columnas
FROM tabla
WHERE condiciones
);
Base De Datos II
24
Descargar