FUNCIONES SQL

Anuncio
FUNCIONES SQL
SQL Server nos proporciona los siguientes tipos de funciones:
 Funciones Integradas
 Funciones definidas por el U suario
FUNCIONES INTEGRADAS (Funciones del Sistema)
SQL Server proporciona las funciones integradas para ayudarle a realizar diver sas
operaciones. No se pueden modificar. Puede utilizar funciones integradas en
instrucciones Transact-SQL para:


Tener acceso a información de las tablas del sistema de SQL Server sin tener
acceso a las tablas del sistema directamente.
Realizar tareas habituales como SUM, GETDATE o IDENTITY.
Las funciones integradas devuelven tipos de datos escalares o table. Por ejemplo,
@@ERROR devuelve 0 si la última instrucción Transact -SQL se ejecutó
correctamente. Si la instrucción generó un error, @@ERROR devuelve el número de
error. Y la función SUM(parameter) devuelve la suma de todos los valores del
parámetro. Para obtener más información acerca de las funciones integradas, vea Usar
las funciones del sistema.
FUNCIONES DEFINIDAS POR EL USUARIO
Las funciones definidas por el usuario se crean con la instrucción CREATE
FUNCTION, se modifican con la instrucción ALTER FUNCTION y se quitan con la
instrucción DROP FUNCTION. Los nombres completos de las funciones definidas por
el usuario (schema_name.function_name ) deben ser únicos.
schema_name Ejemplo: dbo
Instrucciones válidas en una función
Entre los tipos de instrucciones válidos en una función se incluyen:

Las instrucciones DECLARE pueden utilizarse para definir variables y cursores
de datos locales de la función.

La asignación de valores a objetos locales de la función, como la utilización de
SET para asignar valores a variables locales escalares y de tabla.

Las operaciones de cursores que hacen referencia a cursores locales que están
declarados, abiertos, cerrados y no asignados en la función. No se admiten las
instrucciones FETCH que devuelven datos al cliente. Sólo se permiten las
instrucciones FETCH que asigna n valores a variables locales mediante la cláusula
INTO.
Geynen Rossler Montenegro Cochas
Página 1

Instrucciones de control de flujo excepto instrucciones TRY...CATCH.

Instrucciones SELECT que contienen listas de selección con expresiones que
asignan valores a las variables locales para la función .

Instrucciones UPDATE, INSERT y DELETE que modifican las variables de
tabla locales de la función.

Instrucciones EXECUTE que llaman a un procedimiento almacenado extendido.
Especificar parámetros
Una función definida por el usuario tiene de cero a varios parámetros de entrada y
devuelve un valor escalar o una tabla. Una función puede tener un máximo de 1024
parámetros de entrada. Cuando un parámetro de la función tiene un valor
predeterminado, debe especificarse la palabra clave DEFAULT al llamar a la fun ción
para poder obtener el valor predeterminado. Este comportamiento es diferente del de los
parámetros con valores predeterminados de funciones definidas por el usuario, para las
cuales omitir el parámetro implica especificar el valor predeterminado. Las funciones
definidas por el usuario no admiten parámetros de salida.
FUNCIONES DEFINIDAS POR EL USUARIO
Son de dos tipos:

Funciones Escalares.

Funciones con valores de Tabla.
FUNCIONES ESCALARES
Las funciones escalares definidas por el usuario devuelven un único valor de datos del
tipo definido en la cláusula RETURNS. Las funciones escalares en línea no tienen
cuerpo; el valor escalar es el resultado de una sola instrucción. Para una función escalar
de múltiples instrucciones, el cuerpo de la función, defini do en un bloque
BEGIN...END, contiene una serie de instrucciones Transact -SQL que devuelven el
valor único. El tipo devuelto puede ser de cualquier tipo de datos excepto text, ntext,
image, cursor y timestamp.
Ejemplo:
Create Function Suma(@N1 int, @N2 int )
RETURNS Int
AS
BEGIN
Return (@N1 + @N2)
END
--Ejecutar
Geynen Rossler Montenegro Cochas
Página 2
Print dbo.Suma(5,8)
FUNCIONES CON VALORES DE TABLA
Las funciones con valores de tabla definidas por el usuario devuelven un tipo de datos
table. Las funciones con valores de tabla en línea no tiene n cuerpo; la tabla es el
conjunto de resultados de una sola instrucción SELECT.
FUNCIONES DEFINIDAS POR EL USUARIO EN LINEA.
Ejemplo: Función que devuelve una tabla con la lista de productos suspendidos; el
argumento ingresado puede ser 1 -Suspendido o 0-Activo.
Create Function ProdSuspendido(@Sus int)
Returns Table
AS
Return(Select * From Productos Where Suspendido=@Sus)
--Ejecutar
Select * From dbo.ProdSuspendido(1 )
FUNCIONES DEFINIDAS POR EL USUARIO CON VALORES DE TABLA.
Ejemplo: Crear una función que devuelva en formato de tabla el nombre completo de
cada uno de los clientes que pertenecen a una determinada zona
CREATE FUNCTION Nombre_Cliente_F
(
@Zona int
)
RETURNS @NombreCliente Table
(
NombreCompleto Varchar(50)
)
AS
BEGIN
Declare @Nombre Varchar(50)
Insert Into @NombreCliente
Select (Apellidos + ', ' + Nombre)
From Cliente
Where IdZona=@Zona
RETURN
END
--Ejecutar
SELECT * From Nombre_Cliente_F(2)
Geynen Rossler Montenegro Cochas
Página 3
BIBLIOGRAFIA
 Libros en pantalla de SQL Server 2005.
Geynen Rossler Montenegro Cochas
Página 4
Descargar