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

La actualidad más candente

Consultas sql 2014
Consultas sql 2014Consultas sql 2014
Consultas sql 2014
Henry Cambal
 
Comandos utilizados en sql
Comandos utilizados en sqlComandos utilizados en sql
Comandos utilizados en sql
Byron Eras
 
Introducción a sql consultas y criterios de selección
Introducción a sql consultas y criterios de selecciónIntroducción a sql consultas y criterios de selección
Introducción a sql consultas y criterios de selección
M.c. Omar Jasso
 

La actualidad más candente (18)

Objetos de Esquema de Oracle Database Z052-09
Objetos de Esquema de Oracle Database Z052-09Objetos de Esquema de Oracle Database Z052-09
Objetos de Esquema de Oracle Database Z052-09
 
Funciones de Agregacion
Funciones de AgregacionFunciones de Agregacion
Funciones de Agregacion
 
Fundamentos de SELECT SQL
Fundamentos de SELECT SQLFundamentos de SELECT SQL
Fundamentos de SELECT SQL
 
Consultas Basicas En Sql Server 2005
Consultas Basicas En Sql Server 2005Consultas Basicas En Sql Server 2005
Consultas Basicas En Sql Server 2005
 
Consultas sql 2014
Consultas sql 2014Consultas sql 2014
Consultas sql 2014
 
Consultas
ConsultasConsultas
Consultas
 
Comandos SQL
Comandos SQLComandos SQL
Comandos SQL
 
Sql server 2014 básico
Sql server 2014 básicoSql server 2014 básico
Sql server 2014 básico
 
Restricciones y Ordenacion en SQL con Oracle
Restricciones y Ordenacion en SQL con OracleRestricciones y Ordenacion en SQL con Oracle
Restricciones y Ordenacion en SQL con Oracle
 
Comandos utilizados en sql
Comandos utilizados en sqlComandos utilizados en sql
Comandos utilizados en sql
 
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
 
Tutorial Teorico-Practico Sql server 2000 (233 paginas)
Tutorial Teorico-Practico Sql server 2000 (233 paginas)Tutorial Teorico-Practico Sql server 2000 (233 paginas)
Tutorial Teorico-Practico Sql server 2000 (233 paginas)
 
Vistas
VistasVistas
Vistas
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Consultas base de datos en SQL
Consultas base de datos en SQLConsultas base de datos en SQL
Consultas base de datos en SQL
 
Otros Objetos de Esquemas Z051 Cap 12
Otros Objetos de Esquemas Z051 Cap 12Otros Objetos de Esquemas Z051 Cap 12
Otros Objetos de Esquemas Z051 Cap 12
 
Introducción a sql consultas y criterios de selección
Introducción a sql consultas y criterios de selecciónIntroducción a sql consultas y criterios de selección
Introducción a sql consultas y criterios de selección
 
Consultas anidadas o subconsultas oracle
Consultas  anidadas o subconsultas oracleConsultas  anidadas o subconsultas oracle
Consultas anidadas o subconsultas oracle
 

Similar a Funciones+sql+server

Consultas sql 2014
Consultas sql 2014Consultas sql 2014
Consultas sql 2014
Henry Cambal
 
Precentacion de sql visual
Precentacion de sql visualPrecentacion de sql visual
Precentacion de sql visual
BryanChacon12
 
BD_L8_EXP_ROZIC_CAP9_SQL
BD_L8_EXP_ROZIC_CAP9_SQLBD_L8_EXP_ROZIC_CAP9_SQL
BD_L8_EXP_ROZIC_CAP9_SQL
demoiselle
 

Similar a Funciones+sql+server (20)

Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005
 
Base de-datos-ii
Base de-datos-iiBase de-datos-ii
Base de-datos-ii
 
Tema 1 Parte 3.pdf
Tema 1 Parte 3.pdfTema 1 Parte 3.pdf
Tema 1 Parte 3.pdf
 
Sql 2010
Sql 2010Sql 2010
Sql 2010
 
Sentencia select
Sentencia selectSentencia select
Sentencia select
 
Bases de Datos Cap VI:SQL: SQL-Definición de datos
Bases de Datos Cap VI:SQL: SQL-Definición de datosBases de Datos Cap VI:SQL: SQL-Definición de datos
Bases de Datos Cap VI:SQL: SQL-Definición de datos
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)
 
Guia de ejercicio sql
Guia de ejercicio sqlGuia de ejercicio sql
Guia de ejercicio sql
 
Consultas sql 2014
Consultas sql 2014Consultas sql 2014
Consultas sql 2014
 
Actualización de bases de datos en MySQL
Actualización de bases de datos en MySQLActualización de bases de datos en MySQL
Actualización de bases de datos en MySQL
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sql
 
bd2-teorico02.pdf
bd2-teorico02.pdfbd2-teorico02.pdf
bd2-teorico02.pdf
 
MANEJO DE SENTENCIAS DE DEFINICION
MANEJO DE SENTENCIAS DE DEFINICIONMANEJO DE SENTENCIAS DE DEFINICION
MANEJO DE SENTENCIAS DE DEFINICION
 
Taller de Base de Datos - Unidad 3 lenguage DML
Taller de Base de Datos - Unidad 3 lenguage DMLTaller de Base de Datos - Unidad 3 lenguage DML
Taller de Base de Datos - Unidad 3 lenguage DML
 
SENTENCIAS DE SQL SERVER
SENTENCIAS DE SQL SERVERSENTENCIAS DE SQL SERVER
SENTENCIAS DE SQL SERVER
 
1 lab-2 -tablas-y-restricciones
1 lab-2 -tablas-y-restricciones1 lab-2 -tablas-y-restricciones
1 lab-2 -tablas-y-restricciones
 
Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)
 
Curso de pl sql básico
Curso de pl sql básicoCurso de pl sql básico
Curso de pl sql básico
 
Precentacion de sql visual
Precentacion de sql visualPrecentacion de sql visual
Precentacion de sql visual
 
BD_L8_EXP_ROZIC_CAP9_SQL
BD_L8_EXP_ROZIC_CAP9_SQLBD_L8_EXP_ROZIC_CAP9_SQL
BD_L8_EXP_ROZIC_CAP9_SQL
 

Último

cetoacidosis diabetica en pacientes.pptx
cetoacidosis diabetica en pacientes.pptxcetoacidosis diabetica en pacientes.pptx
cetoacidosis diabetica en pacientes.pptx
tecomedico
 
biofisica ciencias básicas biología.docx
biofisica ciencias básicas biología.docxbiofisica ciencias básicas biología.docx
biofisica ciencias básicas biología.docx
melissa501795
 
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad  (2024).pdfPrimeros 70 países por IDH ajustado por desigualdad  (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
JC Díaz Herrera
 
ENTREVISTA PERSONAL 1000 2022 preguntas - AGUERRIDOS (1) (1).pdf
ENTREVISTA PERSONAL 1000 2022 preguntas - AGUERRIDOS (1) (1).pdfENTREVISTA PERSONAL 1000 2022 preguntas - AGUERRIDOS (1) (1).pdf
ENTREVISTA PERSONAL 1000 2022 preguntas - AGUERRIDOS (1) (1).pdf
YADIRARAMOSHUAYTA
 

Último (20)

Diapositivas del fenómeno del niño 123 resumido
Diapositivas del fenómeno del niño 123 resumidoDiapositivas del fenómeno del niño 123 resumido
Diapositivas del fenómeno del niño 123 resumido
 
Flujograma: Reserva de habitación en un hotel
Flujograma: Reserva de habitación en un hotelFlujograma: Reserva de habitación en un hotel
Flujograma: Reserva de habitación en un hotel
 
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdfRESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
 
Presentación diagrama de flujo del desarrollo aronautico.pptx
Presentación diagrama de flujo del desarrollo aronautico.pptxPresentación diagrama de flujo del desarrollo aronautico.pptx
Presentación diagrama de flujo del desarrollo aronautico.pptx
 
China y sus transacciones comerciales-financieras con el exterior (2024).pdf
China y sus transacciones comerciales-financieras con el exterior (2024).pdfChina y sus transacciones comerciales-financieras con el exterior (2024).pdf
China y sus transacciones comerciales-financieras con el exterior (2024).pdf
 
DATOS SOBRE LA VIVIENDA SEGÚN CENSO 2017
DATOS SOBRE LA VIVIENDA SEGÚN CENSO 2017DATOS SOBRE LA VIVIENDA SEGÚN CENSO 2017
DATOS SOBRE LA VIVIENDA SEGÚN CENSO 2017
 
Diagnóstico Institucional en psicologia.docx
Diagnóstico  Institucional en psicologia.docxDiagnóstico  Institucional en psicologia.docx
Diagnóstico Institucional en psicologia.docx
 
REGIMEN MYPE TRIBUTARIO HECHO PARA APORTES PARA LA SUNAT
REGIMEN MYPE TRIBUTARIO HECHO PARA APORTES PARA LA SUNATREGIMEN MYPE TRIBUTARIO HECHO PARA APORTES PARA LA SUNAT
REGIMEN MYPE TRIBUTARIO HECHO PARA APORTES PARA LA SUNAT
 
cetoacidosis diabetica en pacientes.pptx
cetoacidosis diabetica en pacientes.pptxcetoacidosis diabetica en pacientes.pptx
cetoacidosis diabetica en pacientes.pptx
 
Tecnologia de materiales T01- Agregados.docx (1).pdf
Tecnologia de materiales T01- Agregados.docx (1).pdfTecnologia de materiales T01- Agregados.docx (1).pdf
Tecnologia de materiales T01- Agregados.docx (1).pdf
 
El siglo de Asia en pocos datos relevantes (2024).pdf
El siglo de Asia en pocos datos relevantes (2024).pdfEl siglo de Asia en pocos datos relevantes (2024).pdf
El siglo de Asia en pocos datos relevantes (2024).pdf
 
biofisica ciencias básicas biología.docx
biofisica ciencias básicas biología.docxbiofisica ciencias básicas biología.docx
biofisica ciencias básicas biología.docx
 
Desafíos y Oportunidades de la Educación Media Técnico Profesional en Chil...
Desafíos y Oportunidades de la Educación Media Técnico Profesional en Chil...Desafíos y Oportunidades de la Educación Media Técnico Profesional en Chil...
Desafíos y Oportunidades de la Educación Media Técnico Profesional en Chil...
 
Los cantantes más ricos del mundo en mdd U$ (2024).pdf
Los cantantes más ricos del mundo en mdd U$ (2024).pdfLos cantantes más ricos del mundo en mdd U$ (2024).pdf
Los cantantes más ricos del mundo en mdd U$ (2024).pdf
 
PRACTICA 1 SOCIOLOGÍA ANÁLISIS SOCIOLÓGICO.pdf
PRACTICA 1 SOCIOLOGÍA ANÁLISIS SOCIOLÓGICO.pdfPRACTICA 1 SOCIOLOGÍA ANÁLISIS SOCIOLÓGICO.pdf
PRACTICA 1 SOCIOLOGÍA ANÁLISIS SOCIOLÓGICO.pdf
 
Guia-de-Preparacion-Oficial_hggffffffffdEGA_II.pdf
Guia-de-Preparacion-Oficial_hggffffffffdEGA_II.pdfGuia-de-Preparacion-Oficial_hggffffffffdEGA_II.pdf
Guia-de-Preparacion-Oficial_hggffffffffdEGA_II.pdf
 
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad  (2024).pdfPrimeros 70 países por IDH ajustado por desigualdad  (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
 
ENTREVISTA PERSONAL 1000 2022 preguntas - AGUERRIDOS (1) (1).pdf
ENTREVISTA PERSONAL 1000 2022 preguntas - AGUERRIDOS (1) (1).pdfENTREVISTA PERSONAL 1000 2022 preguntas - AGUERRIDOS (1) (1).pdf
ENTREVISTA PERSONAL 1000 2022 preguntas - AGUERRIDOS (1) (1).pdf
 
El narcisismo actualmente en el mundo 2024
El narcisismo actualmente en el mundo 2024El narcisismo actualmente en el mundo 2024
El narcisismo actualmente en el mundo 2024
 
Presentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.pptxPresentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.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);