ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Funciones En SQL Server


Enviado por   •  20 de Mayo de 2014  •  6.288 Palabras (26 Páginas)  •  294 Visitas

Página 1 de 26

Funciones definidas por el usuario en SQL Server 2008

Al igual que las funciones de los lenguajes de programación, las funciones definidas por el usuario de SQL Server son rutinas que aceptan parámetros, realizan una acción, como un cálculo complejo, y devuelven el resultado de esa acción como un valor. El valor devuelto puede ser un valor escalar único o un conjunto de resultados.

Ventajas de las funciones definidas por el usuario

Las ventajas de utilizar las funciones definidas por el usuario en SQL Server son:

• Permiten una programación modular.

Puede crear la función una vez, almacenarla en la base de datos y llamarla desde el programa tantas veces como desee. Las funciones definidas por el usuario se pueden modificar, independientemente del código de origen del programa.

• Permiten una ejecución más rápida.

Al igual que los procedimientos almacenados, las funciones definidas por el usuario Transact-SQL reducen el costo de compilación del código Transact-SQL almacenando los planes en la caché y reutilizándolos para ejecuciones repetidas. Esto significa que no es necesario volver a analizar y optimizar la función definida por el usuario con cada uso, lo que permite obtener tiempos de ejecución mucho más rápidos.

Las funciones CLR ofrecen una ventaja de rendimiento importante sobre las funciones Transact-SQL para tareas de cálculo, manipulación de cadenas y lógica empresarial. Transact-SQL se adecuan mejor a la lógica intensiva del acceso a datos.

• Pueden reducir el tráfico de red.

Una operación que filtra datos basándose en restricciones complejas que no se puede expresar en una sola expresión escalar se puede expresar como una función. La función se puede invocar en la cláusula WHERE para reducir el número de filas que se envían al cliente.

Tipos de Funciones.

Función escalar

Las funciones escalares definidas por el usuario devuelven un único valor de datos del tipo definido en la cláusula RETURNS. En una función escalar insertada no hay cuerpo de la función; el valor escalar es el resultado de una sola instrucción. Para una función escalar de varias instrucciones, el cuerpo de la función, definido en un bloque BEGIN...END, contiene una serie de instrucciones de Transact-SQL que devuelven el único valor. El tipo devuelto puede ser de cualquier tipo de datos excepto text, ntext, image, cursor ytimestamp.

Funciones con valores de tabla

Las funciones con valores de tabla definidas por el usuario devuelven un tipo de datos table. Las funciones insertada con valores de tabla no tienen cuerpo; la tabla es el conjunto de resultados de una sola instrucción SELECT.

Funciones del sistema

SQL Server proporciona numerosas funciones del sistema que se pueden usar para realizar diversas operaciones. No se pueden modificar.

Instrucciones

Los errores de Transact-SQL que producen la cancelación de una instrucción y continúan con la siguiente instrucción del módulo, como desencadenadores o procedimientos almacenados, se tratan de forma distinta dentro de una función. En las funciones, estos errores hacen que se detenga la ejecución de la función. Esto hace que se cancele la función que invocó la instrucción.

Las instrucciones de un bloque BEGIN...END no pueden producir efectos secundarios. Los efectos secundarios de una función son cambios definitivos del estado de un recurso que está fuera del ámbito de la función, como una modificación de una tabla de base de datos. Los únicos cambios que pueden realizar las instrucciones de la función son cambios en objetos locales de la función, como cursores o variables locales. En una función no se pueden llevar a cabo algunas acciones como, por ejemplo, modificar tablas de base de datos, realizar operaciones en cursores no locales de la función, enviar correo electrónico, intentar modificar un catálogo o generar un conjunto de resultados que se devuelve al usuario.

El número de veces que se ejecuta realmente una función especificada en una consulta puede variar entre los planes de ejecución generados por el optimizador. Un ejemplo es una función invocada por una subconsulta en una cláusula WHERE. El número de veces que se ejecuta la subconsulta y su función puede variar con diferentes rutas de acceso seleccionadas por el optimizador.

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. Solo se permiten las instrucciones FETCH que asignan valores a variables locales mediante la cláusula INTO.

• 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.

Funciones del sistema integradas

Las siguientes funciones integradas no deterministas se pueden usar en funciones Transact-SQL definidas por el usuario.

CURRENT_TIMESTAMP @@MAX_CONNECTIONS

GET_TRANSMISSION_STATUS @@PACK_RECEIVED

...

Descargar como (para miembros actualizados)  txt (44.6 Kb)  
Leer 25 páginas más »
Disponible sólo en Clubensayos.com