0% encontró este documento útil (0 votos)
47 vistas28 páginas

Funciones en SQL Server 2021: Guía Completa

Este documento describe diferentes tipos de funciones en SQL Server 2021, incluyendo funciones del sistema como funciones de agregado y fecha/hora, funciones definidas por el usuario como escalares y de tabla, y ejemplos de cómo implementar funciones.

Cargado por

Mike Wasouski
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
47 vistas28 páginas

Funciones en SQL Server 2021: Guía Completa

Este documento describe diferentes tipos de funciones en SQL Server 2021, incluyendo funciones del sistema como funciones de agregado y fecha/hora, funciones definidas por el usuario como escalares y de tabla, y ejemplos de cómo implementar funciones.

Cargado por

Mike Wasouski
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

FUNCIONES

SQL SERVER
2021
 Rutina almacenada que recibe unos
parámetros escalares de entrada, luego
los procesa según el cuerpo definido de
la función y por último retorna un
resultado de un tipo específico que
Funciones permitirá cumplir un objetivo.
 SQL Server proporciona numerosas
funciones integradas y permite crear
funciones definidas por el usuario.
Funciones de Sistema

Tipos de
Funciones Funciones definidas por el
usuario
 SQL Server cuenta con una gran
variedad de funciones
Funciones del dependiendo de los valores o
Sistema configuraciones que deseamos
realizar.
 Funciones de Agregado.
SUM, AVG, COUNT, MAX, MIN

 Funciones de Fecha y Hora.


Funciones del GETDATE, DAY, MONTH, YEAR,
Sistema DATEADD, DATEDIF, ISADATE

 Funciones Matemáticas.
ABS, RAND, LOG10, SQRT, POWER, TAN,
PI, RADIANS.
Funciones para fechas
FUNCIÓN DESCRIPCIÓN SINTAXIS
DATEADD Devuelve la fecha, agregando a la misma la cantidad DATEADD (datepart , number , date )
especificado en “number” a la parte de la fecha
indicado en “datepart”
DATEDIFF Devuelve el número de límites “datepart” de fecha DATEDIFF (datepart , startdate ,
entre dos fechas especificadas enddate )
DATENAME Devuelve una cadena de caracteres que representa DATENAME ( datepart , date )
el “datepart” de la fecha especificada

DATEPART Devuelve un entero que representa el datepart del DATEPART ( datepart , date )
date especificado.
DAY Devuelve un entero que representa la parte del día DAY (date)
de la fecha especificada
MONTH Devuelve un entero que representa el mes de date MONTH (date )
especificado.
YEAR Devuelve un entero que representa el año de date YEAR ( date )
especificado.
FUNCIONES PARA CADENAS
Funciones para cadenas
FUNCIÓN DESCRIPCIÓN SINTAXIS
LEFT Devuelve la parte izquierda de una cadena de LEFT ( character_expression ,
caracteres con el número de caracteres integer_expression )
especificado.
Devuelve el número de caracteres de la expresión LEN ( string_expression )
LEN de cadena especificada, excluidos los espacios en
blanco finales.
LOWER Devuelve una expresión de caracteres convirtiendo LOWER ( character_expression )
en minúsculas los caracteres en mayúsculas.
UPPER Devuelve una expresión de caracteres convirtiendo UPPER ( character_expression )
los caracteres en minúsculas a mayúsculas.
LTRIM Devuelve una expresión de caracteres quitando LTRIM ( character_expression )
todos los espacios iniciales en blanco.
RTRIM Devuelve una cadena de caracteres truncando todos RTRIM ( character_expression )
los espacios en blanco finales.
FUNCIONES PARA CONVERSIÓN
FUNCIÓN DESCRIPCIÓN SINTAXIS
CAST Convierte una CAST (expresión AS
expresión a un tipo_dato[(longitud)])
Funciones tipo de datos
para CONVERT
Convierte una
expresión a un
CONVERT (tipo_dato
[(longitud)], expresión)
conversión tipo de datos
indicando un
estilo.
 Son rutinas que permiten
encapsular sentencias TRANSACT-
SQL que se ejecutan
frecuentemente.
Funciones
definidas por el  Aceptan parámetros, realizan una
usuario acción, como un cálculo complejo y
devuelven el resultado de esa
acción como un valor (único o
conjunto de valores)
 1. Funciones Escalares
Clasificación de las  2. Funciones con valores de tabla
funciones de varias instrucciones
definidas por el
 3. Funciones con valores de tabla
usuario
en línea
 Son aquellas funciones donde
retornan un valor único: tipo de
datos como int, Money, varchar,
Funciones real, etc. Pueden ser utilizadas en
Escalares cualquier lugar, incluso,
incorporada dentro de las
sentencias SQL.
CREATE FUNCTION Nombre_Función
(@parámetro1 as [Tipo Dato] = [ValorXDefecto],
@parámetro2 as [Tipo Dato] = [ValorXDefecto])
RETURNS TipoDato_Retornado
AS
Sintaxis
BEGIN
<Instrucciones>
RETURN Expresión_salida
END
CREATE FUNCTION calculaProm
( @num1 as decimal(10,2),
@num2 as decimal(10,2))
1. IMPLEMENTAR UNA RETURNS decimal(10,2)
FUNCIÓN QUE DEVUELVA EL AS
PROMEDIO DE DOS
NÚMEROS INGRESADOS BEGIN
POR EL USUSARIO.
Declare @promedio decimal(10,2)
Set @promedio = (@num1+@num2)/2
RETURN @promedio
END
Select dbo.calculaProm(15.2, 10.5)
as Promedio
Go

Ejecutando …
Print ‘El promedio es: ’ +
cast(dbo.calculaProm(15.2, 10.5) as
varchar(5))
CREATE FUNCTION COMPRA.PRECIOPROMEDIO()
RETURNS DECIMAL
AS

2 CREAR UNA FUNCIÓN BEGIN


QUE RETORNE EL PRECIO DECLARE @prom DECIMAL
PROMEDIO DE LOS
SELECT @PROM=AVG(TotalUnidades)
PRODUCTOS.
FROM Productos
RETURN @prom

END
GO
CREATE FUNCTION PEDIDO_CLIENTES
(@codigo VARCHAR(5))
RETURNS INT
AS
BEGIN
3 CREAR UNA FUNCIÓN
DONDE INGRESE EL ID DEL DECLARE @Q INT = 0
CLIENTE Y RETORNE LA SELECT @Q=COUNT(*)
CANTIDAD DE FROM PedidosCabe
PEDIDOS QUE REALIZÓ.
WHERE IdCliente=@codigo
RETURN @Q
END
GO
CREATE FUNCTION fechaLarga
( @fecha as date )
RETURNS varchar(20)
AS
4. IMPLEMENTAR UNA
FUNCIÓN QUE DEVUELVA BEGIN
UNA FECHA INGRESADA EN
FORMATO LARGO. Declare @fecLarga varchar(20)
(15/08/2018  15 de Set @fecLarga = concat(day(@fecha),
Agosto de 2018). ‘ de ‘, datename(month,@fecha),
‘ del ‘, year(@fecha))
RETURN @fecLarga
END
Select dbo.fechaLarga(‘26/06/2018’)
as Fecha Actual
go

Ejecutando …
Print ‘Hoy es: ’ +dbo.
fechaLarga(‘26/06/2018’)
Select nomEmpleado, apeEmpleado, fecNac
from Empleados
go

Ejecutando …
para la Base de Select nomEmpleado, apeEmpleado,
Datos fechaLarga (fecNac) as
[Fecha Nacimiento]
from Empleados
go
 Las funciones de tabla en línea son
aquellas que devuelven la salida de
una simple declaración SELECT.
2. Funciones de
Tabla en Línea  La salida se puede utilizar adentro
de JOINS o querys como si fuera
una tabla de estándar.
CREATE FUNCTION [propietario.] nombre_funcion
([{ @parameter tipo de dato [ = default]} [,..n]])
RETURNS TABLE
Sintaxis
[AS]
RETURN [(] Sentencia SQL [)]
CREATE FUNCTION provXprod
( @producto as varchar(30) )
RETURNS TABLE
5. IMPLEMENTAR UNA AS
FUNCIÓN DE TABLA EN
LÍNEA QUE MUESTRE LOS RETURN (select prod.IdProducto, prov.[IdProveedor],
REGISTROS DE LA TABLA prov.[nomProveedor], [nomProducto]
PROVEEDOR from Proveedores prov
DEPENDIENDO DEL
PRODUCTO. inner join productos prod
on prov.IdProveedor = prod.IdProveedor
where nomProducto = @producto)
go
Select *
from provXprod('monami')
Ejecutando … go
Ejecutando en la BD la función
definida…

Seleccionar
proveedores cuyo Select *
precio por unidad from provXprod('monami') as pxp
del producto X sea
inner join Productos as p
menor a 100
on pxp.idProducto = p.IdProducto
where p.precioUnidad<100
 Son similares a los
3. Funciones de procedimientos almacenados
Tabla de excepto que devuelven una
Multisentencias tabla.
CREATE FUNCTION [propietario.] nombre_funcion
([{@parameter tipo de dato [ = default]} [,..n]])
RETURNS TABLE
[AS]
Sintaxis BEGIN
<Cuerpo de la función>
RETURN
END
CREATE FUNCTION ClientesPais
( @pais as varchar(30) )
RETURNS
@TABLA TABLE(CodigoCli VARCHAR(10),
NombreCli VARCHAR(50),
paisCli VARCHAR(30))
Defina una función AS
que retorne solo BEGIN
aquellos Clientes del INSERT INTO @TABLA
país X SELECT c.IdCliente, c.nomCliente, p.NombrePais
FROM [venta].[Clientes] c inner join [venta].[Paises] p on c.idpais =
p.idpais
where p.[NombrePais]=@pais
RETURN
END
SELECT *
Ejecutando … FROM ClientesPais('Bolivia')
GO

También podría gustarte