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