Programacion
Tipos de Funciones
• SQL Server ofrece varios tipos de funciones para
realizar distintas operaciones. Hemos visto y empleado
varias de ellas.
• Se pueden emplear las funciones del sistema en
cualquier lugar en el que se permita una expresión en
una sentencia "select".
• Las funciones pueden clasificarse en:
• - deterministicas: siempre retornan el mismo resultado
si se lasinvoca enviando el mismo valor de entrada.
Todas las funciones de agregado y string son
deterministicas, excepto "charindex" y "patindex".
• - no determinísticas: pueden retornar distintos
resultados cada vez que se invocan con el
mismo valor de entrada. Las siguientes son
algunas de las funciones no deterministicas:
getdate, datename, textptr, textvalid, rand.
Todas las funciones deconfiguración, cursor,
meta data, seguridad y estadísticas del
sistema son no determinísticas.
• SQL Server provee muchas funciones y además permite
que el usuario pueda definir sus propias funciones.
• Sabemos que una función es un conjunto de sentencias
que operan como una unidad lógica, una rutina que
retorna un valor. Una función tiene un nombre, acepta
parámetros de entrada y retornaun valor escalar o una
tabla.
• Los parámetros de entrada pueden ser de cualquier
tipo, excepto timestamp, cursor y table.
• Las funciones definidas por el usuario no permiten
parámetros de salida.
Restricciones
• No todas las sentencias SQL son válidas dentro de una
función. NO es posible emplear en ellas funciones no
determinadas (como getdate()) ni sentencias de
modificación oactualización de tablas o vistas. Si podemos
emplear sentencias de asignación, de control de flujo (if),
de modificación y eliminación de variables locales.
• SQL Server admite 3 tipos de funciones definidas por el
usuario clasificadas según el valor retornado:
• 1) escalares: retornan un valor escalar;
• 2) de tabla de varias instrucciones (retornan una tabla) y
• 3) de tabla en línea(retornan una tabla).
• Las funciones definidas por el usuario se crean con la
instrucción "create function" y se eliminan con "drop
function".
Eliminar una función
• Las funciones definidas por el usuario se eliminan con la instrucción
"drop function":
Sintaxis:
• drop function NOMBREPPROPIETARIO.NOMBREFUNCION; Se coloca
el nombre del propietario seguido del nombre de la función.
• Si lafunción que se intenta eliminar no existe, aparece un mensaje
indicándolo, para evitarlo, podemos verificar su existencia antes de
solicitar su eliminación (como con cualquier otro objeto):
• if object_id('NOMBREPROPIETARIO.NOMBREFUNCION') is not null
drop function NOMBREPROPIETARIO.NOMBREFUNCION;
Eliminamos, si existe, la función denominada "f_fechacadena":
• if object_id('dbo.f_fechacadena')is not null drop function
dbo.f_fechacadena;
Funciones escalares (crear y llamar)
• Una función escalar retorna un único valor. Como todas
las funciones, se crean con la instrucción
• "create function". La sintaxis básica es:
• create function NOMBRE (@PARAMETRO
TIPO=VALORPORDEFECTO) returns TIPO begin
INSTRUCCIONES return VALOR end; Luego del nombre
se colocan (opcionalmente) losparámetros de entrada
con su tipo.
• La cláusula "returns" indica el tipo de dato retornado.
• El cuerpo de la función, se define en un bloque
"begin...end" que contiene las instrucciones que
retornan el valor. El valor retornado pude ser de
cualquier tipo , excepto text, ntext, image, cursor o
timestamp.
Ejemplo
•
•
Creamos una función denominada "f_promedio" que recibe 2 valores yretorna el promedio:
create function f_promedio (
@valor1 decimal(4,2),
@valor2 decimal(4,2) )
returns decimal (6,2) as
begin
declare @resultado decimal(6,2)
set @resultado=(@valor1+@valor2)/2
return @resultado
end;
• Luego de "create function" y el nombre de la función,
se deben especificar los parámetros de entrada con sus
tipos de datos (entre paréntesis), el tipo de dato que...
Regístrate para leer el documento completo.