SlideShare una empresa de Scribd logo
Funciones sql server
Funciones escalares devuelven un valor sencillo
CREATE FUNCTION nombre_función (
[parámetro1, parámetro2,...]) RETURNS
tipo_de_dato [WITH ENCRYPTION | WITH
SCHEMABINDING] [AS]
BEGIN<bloque_de_instrucciones> RETURN
valor_retornado END
CREATE FUNCTION cuanto_ha_viajado(@idpasajero INT,
@fecha_inicio DATE , @fecha_final DATE) RETURNS INT
AS BEGIN DECLARE @cantidad_ocasiones INT; SELECT
@cantidad_ocasiones = COUNT(a.idpasajero) FROM
Aerolinea.Boleto AS a WHERE a.idpasajero = @idpasajero
AND (fecha_compra BETWEEN @fecha_inicio AND
@fecha_final); IF ( @cantidad_ocasiones IS NULL) SET
@cantidad_ocasiones = 0; RETURN @cantidad_ocasiones;
END
Funciones con Valores de Tabla
en Línea
Este tipo de función tiene la misma sintaxis que una función escalar,
la única diferencia está en que retorna un tipo de dato TABLE, es
decir, una tabla compuesta de registros. Veamos la variación de la
sintaxis:
CREATE FUNCTION nombre_función ( [parámetro1,
parámetro2,...]) RETURNS TABLE [WITH ENCRYPTION |
WITH SCHEMABINDING] [AS] RETURN
(consulta_SELECT)
Consulte todas las compras realizadas de un producto específico. Use el código del
producto para generar los resultados y muestre el nombre del cliente que compro ese
producto, la fecha en que se compro, el precio que tenia en ese momento y la cantidad
comprada.
CREATE FUNCTION ventas_producto(@idproducto INT) RETURNS
TABLE AS RETURN( SELECT C.NOMBRE, F.FECHA, DF.CANTIDAD,
DF.PRECIO,P.IDPRODUCTO FROM CLIENTE AS C JOIN FACTURA AS
F ON C.IDCLIENTE = F.IDCLIENTE JOIN DETALLEFACTURA AS DF ON
DF.IDFACTURA = F.IDFACTURA JOIN PRODUCTO AS P ON
P.IDPRODUCTO = DF.IDPRODUCTO WHERE P.IDPRODUCTO =
@idproducto)
SELECT SUM(CANTIDAD*PRECIO) FROM ventas_producto(1003)
Funciones con Valores de Tabla y Múltiples Instrucciones
Este tipo de funciones son similares a las funciones de tabla en linea, solo que incluyen un
bloque de sentencias para manipular la información antes de retornar la tabla. Su sintaxis de
creación es la siguiente:
CREATE FUNCTION nombre_función ( [parámetro1, parámetro2,...]) RETURNS @variable_tabla TABLE
(nombre_columna tipo,...) [WITH ENCRYPTION | WITH SCHEMABINDING] [AS] BEGIN <bloque de
instrucciones> RETURN END
muestre todos los registros de la tabla EMPLEADO que tengan un salario mayor o
igual a un valor establecido como parámetro . Además de ello combine en un solo
campo el nombre y apellido del empleado y agregue un nuevo atributo que
muestre la cantidad de días que lleva el empleado desde su fecha de ingreso.
CREATE FUNCTION reporte1_empleados(@salarioemp INT) RETURNS @tabla
TABLE ( IDEMPLEADO INT PRIMARY KEY NOT NULL IDENTITY, NOMBRE
VARCHAR(200) NOT NULL, SALARIO INT NOT NULL, DIASLABORANDO INT
NOT NULL) AS BEGIN INSERT @tabla SELECT E.NOMBRE+'
'+E.APELLIDO,E.SALARIO, DATEDIFF(DAY,E.FECHA_INGRESO,GETDATE())
FROM EMPLEADO AS E WHERE E.SALARIO >= @salarioemp; RETURN; END
SELECT * FROM reporte1_empleados(1000);

Más contenido relacionado

PPT
Funciones store proc_triggers
PPT
Consultas en sql básico
PDF
Funciones store proc_triggers
DOCX
Cuadro de sentencias con descripcion y ejemplo
PPT
Introducción a Sql
PPTX
Unidad iii dql
PDF
Consultas básicas en sql server
Funciones store proc_triggers
Consultas en sql básico
Funciones store proc_triggers
Cuadro de sentencias con descripcion y ejemplo
Introducción a Sql
Unidad iii dql
Consultas básicas en sql server

La actualidad más candente (18)

PPTX
Objetos de Esquema de Oracle Database Z052-09
PPTX
Funciones de Agregacion
PPTX
Fundamentos de SELECT SQL
PPT
Consultas Basicas En Sql Server 2005
PPTX
Consultas sql 2014
PPT
PPT
Comandos SQL
PPTX
Sql server 2014 básico
PPTX
Restricciones y Ordenacion en SQL con Oracle
PPTX
Comandos utilizados en sql
PDF
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
PDF
Tutorial Teorico-Practico Sql server 2000 (233 paginas)
PPTX
Subconsultas
PPT
Consultas base de datos en SQL
PPTX
Otros Objetos de Esquemas Z051 Cap 12
PPT
Introducción a sql consultas y criterios de selección
DOCX
Consultas anidadas o subconsultas oracle
Objetos de Esquema de Oracle Database Z052-09
Funciones de Agregacion
Fundamentos de SELECT SQL
Consultas Basicas En Sql Server 2005
Consultas sql 2014
Comandos SQL
Sql server 2014 básico
Restricciones y Ordenacion en SQL con Oracle
Comandos utilizados en sql
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Tutorial Teorico-Practico Sql server 2000 (233 paginas)
Subconsultas
Consultas base de datos en SQL
Otros Objetos de Esquemas Z051 Cap 12
Introducción a sql consultas y criterios de selección
Consultas anidadas o subconsultas oracle
Publicidad

Similar a Funciones+sql+server (20)

DOC
Taller funciones de usuario
PDF
Base de-datos-ii
PPTX
Ddl 00
PDF
Complemento del manual de programacion iii sql
PDF
Guia de ejercicios para resolver sql
PPTX
Introduccion ddl
PPTX
Introduccion ddl
PPTX
Yair Leo Rojas Mera
PPTX
Transact SQL Fundamental
PPTX
PDF
Tema 1 Parte 3.pdf
DOC
Tarea Querys Sql de Wilmer Alcivar
DOCX
11 Guía_Fundamentos de Base de Datos.docx
DOCX
PPT
Presentacion Sql 2
DOCX
Sub consultas
PPTX
Dd lxaas
PPTX
sub Consultas Oracle SQL
PPTX
Funciones de grupo
Taller funciones de usuario
Base de-datos-ii
Ddl 00
Complemento del manual de programacion iii sql
Guia de ejercicios para resolver sql
Introduccion ddl
Introduccion ddl
Yair Leo Rojas Mera
Transact SQL Fundamental
Tema 1 Parte 3.pdf
Tarea Querys Sql de Wilmer Alcivar
11 Guía_Fundamentos de Base de Datos.docx
Presentacion Sql 2
Sub consultas
Dd lxaas
sub Consultas Oracle SQL
Funciones de grupo
Publicidad

Último (20)

PPTX
Tutoria 3. Unidad 2 PRUEBAS BIOLÓGICAS.pptx
PDF
Riesgos en Negociaciones_comercio exterior.pdf
PDF
Actualización en el uso de uterotónico.pdf
PDF
Presentación para empoderar a un equipo a factirar
PDF
6°-Básico-Matemática-Diagrama-de-tallo-y-hoja_y_probabilidades.pdf
PDF
PRESENTACION DE LA ASIGNATURA materiales no convencionales.pdf
PDF
INFORME ESPECIAL BICENTENARIO DE BOLIVIA.pdf
PPTX
FACTORES DE RIESGOS EN EL PERSONAL DE SALUD 2 DIAPOSITIVAS.pptx
PDF
EJERCICIOS RESUELTOS CON SOLVER EXCEL.pdf
PPTX
Precio optimo de venta para un emprendimiento familiar
PDF
Pobreza porcentual en el mundo y sistemas socioeconómicos (1945-2030).pdf
PDF
docsity-diapositivas-de-la-salud-mental.pdf
PDF
Unidad Nº 1 Introduccion a Estadísticas
PDF
Los 10 mayores Fondos Soberanos de Riqueza (2025).pdf
PPTX
CRITERIOS DE UN SERVICIO DE INTENSIVO presen.pptx
PPTX
lareformaprevisional-091013175510-phpapp01.pptx
PDF
Mapa mental.pdf esquema de realización en general
PPTX
Embarazo en adolescentes ksjsjjdkxkxkxkxxj
PPTX
DOROTHEA E OREM EXPO.pptx de una teoridta importante
PPTX
Abdomen HosAESREBBweubeehkrhkqhrkhehrjktil.pptx
Tutoria 3. Unidad 2 PRUEBAS BIOLÓGICAS.pptx
Riesgos en Negociaciones_comercio exterior.pdf
Actualización en el uso de uterotónico.pdf
Presentación para empoderar a un equipo a factirar
6°-Básico-Matemática-Diagrama-de-tallo-y-hoja_y_probabilidades.pdf
PRESENTACION DE LA ASIGNATURA materiales no convencionales.pdf
INFORME ESPECIAL BICENTENARIO DE BOLIVIA.pdf
FACTORES DE RIESGOS EN EL PERSONAL DE SALUD 2 DIAPOSITIVAS.pptx
EJERCICIOS RESUELTOS CON SOLVER EXCEL.pdf
Precio optimo de venta para un emprendimiento familiar
Pobreza porcentual en el mundo y sistemas socioeconómicos (1945-2030).pdf
docsity-diapositivas-de-la-salud-mental.pdf
Unidad Nº 1 Introduccion a Estadísticas
Los 10 mayores Fondos Soberanos de Riqueza (2025).pdf
CRITERIOS DE UN SERVICIO DE INTENSIVO presen.pptx
lareformaprevisional-091013175510-phpapp01.pptx
Mapa mental.pdf esquema de realización en general
Embarazo en adolescentes ksjsjjdkxkxkxkxxj
DOROTHEA E OREM EXPO.pptx de una teoridta importante
Abdomen HosAESREBBweubeehkrhkqhrkhehrjktil.pptx

Funciones+sql+server

  • 2. Funciones escalares devuelven un valor sencillo CREATE FUNCTION nombre_función ( [parámetro1, parámetro2,...]) RETURNS tipo_de_dato [WITH ENCRYPTION | WITH SCHEMABINDING] [AS] BEGIN<bloque_de_instrucciones> RETURN valor_retornado END
  • 3. CREATE FUNCTION cuanto_ha_viajado(@idpasajero INT, @fecha_inicio DATE , @fecha_final DATE) RETURNS INT AS BEGIN DECLARE @cantidad_ocasiones INT; SELECT @cantidad_ocasiones = COUNT(a.idpasajero) FROM Aerolinea.Boleto AS a WHERE a.idpasajero = @idpasajero AND (fecha_compra BETWEEN @fecha_inicio AND @fecha_final); IF ( @cantidad_ocasiones IS NULL) SET @cantidad_ocasiones = 0; RETURN @cantidad_ocasiones; END
  • 4. Funciones con Valores de Tabla en Línea Este tipo de función tiene la misma sintaxis que una función escalar, la única diferencia está en que retorna un tipo de dato TABLE, es decir, una tabla compuesta de registros. Veamos la variación de la sintaxis: CREATE FUNCTION nombre_función ( [parámetro1, parámetro2,...]) RETURNS TABLE [WITH ENCRYPTION | WITH SCHEMABINDING] [AS] RETURN (consulta_SELECT)
  • 5. Consulte todas las compras realizadas de un producto específico. Use el código del producto para generar los resultados y muestre el nombre del cliente que compro ese producto, la fecha en que se compro, el precio que tenia en ese momento y la cantidad comprada. CREATE FUNCTION ventas_producto(@idproducto INT) RETURNS TABLE AS RETURN( SELECT C.NOMBRE, F.FECHA, DF.CANTIDAD, DF.PRECIO,P.IDPRODUCTO FROM CLIENTE AS C JOIN FACTURA AS F ON C.IDCLIENTE = F.IDCLIENTE JOIN DETALLEFACTURA AS DF ON DF.IDFACTURA = F.IDFACTURA JOIN PRODUCTO AS P ON P.IDPRODUCTO = DF.IDPRODUCTO WHERE P.IDPRODUCTO = @idproducto) SELECT SUM(CANTIDAD*PRECIO) FROM ventas_producto(1003)
  • 6. Funciones con Valores de Tabla y Múltiples Instrucciones Este tipo de funciones son similares a las funciones de tabla en linea, solo que incluyen un bloque de sentencias para manipular la información antes de retornar la tabla. Su sintaxis de creación es la siguiente: CREATE FUNCTION nombre_función ( [parámetro1, parámetro2,...]) RETURNS @variable_tabla TABLE (nombre_columna tipo,...) [WITH ENCRYPTION | WITH SCHEMABINDING] [AS] BEGIN <bloque de instrucciones> RETURN END
  • 7. muestre todos los registros de la tabla EMPLEADO que tengan un salario mayor o igual a un valor establecido como parámetro . Además de ello combine en un solo campo el nombre y apellido del empleado y agregue un nuevo atributo que muestre la cantidad de días que lleva el empleado desde su fecha de ingreso. CREATE FUNCTION reporte1_empleados(@salarioemp INT) RETURNS @tabla TABLE ( IDEMPLEADO INT PRIMARY KEY NOT NULL IDENTITY, NOMBRE VARCHAR(200) NOT NULL, SALARIO INT NOT NULL, DIASLABORANDO INT NOT NULL) AS BEGIN INSERT @tabla SELECT E.NOMBRE+' '+E.APELLIDO,E.SALARIO, DATEDIFF(DAY,E.FECHA_INGRESO,GETDATE()) FROM EMPLEADO AS E WHERE E.SALARIO >= @salarioemp; RETURN; END SELECT * FROM reporte1_empleados(1000);