funciones definidas por el usuario - sql

Upload: jean-paul-perea

Post on 05-Apr-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    1/20

    FUNCIONES DEFINIDAS

    POR EL USUARIO

    MG. Luis Boy Chavil

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    2/20

    Funciones definidas por el usuario

    Son rutinas de una o ms instrucciones Transac-SQLque pueden utilizarse para encapsular cdigo con

    el fin de reutilizarlo.

    Una funcin toma 0 o ms parmetros de entrada ydevuelve un valor escalar o una tabla.

    Los valores de entrada pueden ser de cualquier tipo de

    datos, excepto timestamp, cursor o table.

    Las funciones no aceptan parmetros de salida.

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    3/20

    Ventajas de las UDFs

    Permiten una programacin modular

    Las UDFs, despus de creadas, pueden ser modificadas.

    Permiten una ejecucin ms rpida

    Las UDFs, una vez compiladas, no es necesario volver aanalizarlas y optimizarlas.

    Pueden reducir el trfico de red

    Pueden expresar operaciones complejas de filtro de datos

    y luego estas funciones se pueden expresar en la clusula

    WHERE para reducir el nmero de filas que se envian al

    cliente.

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    4/20

    Componentes de una UDF

    El encabezado, que define: Nombre de la funcin con nombre del propietario o esquema

    opcional

    Nombre del parmetro de entrada y tipo de datos

    Opciones aplicables al parmetro de entrda Tipo de datos de parmetro devueltos y nombre opcional

    Opciones aplicables al parmetro devuelto.

    El cuerpo de la funcin, que define: Una o ms instrucciones que ejecutan la lgica de la funcin

    Una referencia a un ensamblado .NET

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    5/20

    Funciones Escalares

    Devuelven un nico valor de datos del tipo definido enla clusula RETURN.

    El tipo devuelto puede ser de cualquier tipo de datosexcepto text, ntext, image, cursor y timestamp.

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    6/20

    Funciones Escalares

    Sintaxis:CREATE FUNCTION [schema_name.]funcion_name ([{@parameter_name

    [AS]

    [Type_schema_name.]parameter_data_type [=default] [READONLY]} [, n])

    RETURNS return_data_type[WITH [,n]] [AS]

    BEGIN

    function_body

    RETURN scalar_expression

    END[;]

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    7/20

    Schema_name Nombre del esquema al que pertenece la UDF

    Function_name

    Nombre de la funcin definida por el usuario @parameter_name

    La UDF puede tener un mximo de 2,100 parmetros

    [type_schema_name.]parameter_data_type

    Es el tipo de datos del parmetro, y de forma opcional, el

    esquema al que pertenece.

    Funciones Escalares

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    8/20

    [=default]

    Es un valor predeterminado para el parmetro. Si se define un

    valor default, la funcin se puede ejecutar sin especificar un valorpara ese parmetro.

    READONLY

    Indica que el parmetro no se puede modificar en la definicin de

    la funcin.

    Return_data_type Es el valor devuelto

    Funciones Escalares

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    9/20

    -- Funcin para calcular un nmero elevado al cuboUSE Northwind

    go

    if OBJECT_ID ('dbo.fnCubo', 'FN') is not null

    drop function fnCubo

    go

    create function dbo.fnCubo(@Numero float)

    returns float

    AS

    Begin

    return (@Numero * @Numero * @Numero)

    Endgo

    -- Ejecucin de la funcin fnCubo

    USE Northwind

    go

    select dbo.fnCubo(5)

    go

    Funciones Escalares

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    10/20

    Funciones de tabla en lnea

    Devuelven la salida de un tipo de dato TABLE Sintaxis:

    CREATE FUNCTION [schema_name.]funcion_name ([{@parameter_name

    [AS][Type_schema_name.]parameter_data_type [=default] [READONLY]} [,

    n])

    RETURNS TABLE

    [WITH [,n]] [AS]

    RETURN [(] select_stmt [)]

    [;]

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    11/20

    TABLE Especifica que el valor devuelto de la funcin con valores de

    tabla es una tabla. Slo se pueden pasar constantes y@local_variables a las funciones con valores de tabla.

    En las funciones insertadas con valores de tabla, el valor

    devuelto de TABLE se define mediante una nica instruccinSELECT. Las funciones insertadas no tienen variables deretorno asociadas.

    Funciones de tabla en lnea

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    12/20

    Funciones de tabla de mltiples sentencias

    Son similares a los store procedures; exceptoque devuelven una tabla.

    Sintaxis:CREATE FUNCTION [schema_name.]funcion_name

    ([{@parameter_name[AS]

    [Type_schema_name.]parameter_data_type [=default] [READONLY]}[, n])

    RETURNS @return_variable TABLE

    [WITH [,n]] [AS]BEGIN

    function_body

    END

    [;]

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    13/20

    SUM Devuelve el total de los valores de una columna

    SUM ([ALL|DISTINCT] expression)

    MAX Devuelve el valor mximo de una columna en una

    tabla o conjunto de filas devuelto en una consulta

    MAX ([ALL|DISTINCT] expression)

    MIN Devuelve el valor mnimo de una columna en una

    tabla o conjunto de filas devuelto en una consulta

    MIN ([ALL|DISTINCT] expression)

    Funciones Integradas

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    14/20

    Funciones Integradas

    AVG Calcula el valor medio de una columna o en un

    conjunto de filas, segun como se use.

    AVG ([ALL|DISTINCT] expression)

    COUNT Devuelve el nmero de filas de una consulta que

    coincide con una clusula WHERE en concreto.

    COUNT ({[[ALL|DISTINCT] expression]|*})

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    15/20

    Funciones Integradas

    CONVERT y CAST Convierte un tipo de datos en otro de forma que

    se pueda realizar ciertas operaciones.

    CAST (expression AS data_type [(length)])

    CONVERT(data_type [(length)], expression[,style])

    GETDATE

    Devuelve la fecha y hora actual del sistema

    GETDATE()

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    16/20

    Funciones Integradas

    DATEDIFF Compara y obtiene la diferencia entre elementos

    de fecha, como das, semanas, minutos y horas.

    DATEDIFF (datepart, startdate, endate)

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    17/20

    Funciones Integradas

    DATEPART Devuelve un valor igual a la parte de la fecha que

    haya especificado.

    DATEPART (datepart, date)

    Otras funciones: Substring, Left, Right, Upper

    Charindex

    Rtrim, Ltrim, Len, Replicate, Space Replace, Str, Char

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    18/20

    Funciones del Sistema

    ISNULL COALESCE

    Similar a ISNULL, pero permite que una lista devalores sustituya al valor nulo.

    COALESCE (expression [, ])

    NEWID Crea un valor nico del tipo: uniqueidentifier

    NEWID()

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    19/20

    Funciones del Sistema

    USER_ID Toma una cadena de nombre y devuelve el Id de

    la base de datos para ese nombre.

    USER_ID([user])

    USER_NAMEUSER_NAME ( [ID])

    DATALENGTH

    Devuelve la longitud de los datos almacenados enuna variable o en una columna.

    DATALENGTH(expression)

  • 7/31/2019 Funciones Definidas Por El Usuario - SQL

    20/20

    Funciones del Sistema

    HOST_NAME Devuelve el nombre de la estacin de trabajo en

    la que se encuentra actualmente ejecutando algunproceso determinado.

    HOST_NAME()