Funcionesdetablas

Page 1

Sesiรณn 11

Funciones definidas por el usuario, que devuelven tablas.


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Funciones definidas por el usuario = User-Defined Functions = UDFs

Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Funciones definidas por el usuario (UDFs): Son rutinas (código) 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 (tabla). Las funciones que devuelven tablas son un poco más complicadas de crear. Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

UDFs que devuelven tablas Este tipo de funciones definidas por el usuario devuelven un conjunto de filas y columnas, es decir, tablas, como estas funciones devuelven una tabla, entonces la función se puede tratar como una tabla, se puede usar en SELECT, se pueden usar JOINs para unirla a tablas, vistas u otras funciones, se pueden usar las cláusulas WHERE, ORDER BY, etc. También se pueden usar UDFs que devuelven valores escalares dentro de la definición de la función. Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

UDFs que devuelven tablas SELECT * FROM dbo.funcion_tabla() Al ejecutar la instrucción SELECT con la función dbo.funcion_tabla(), ésta devuelve una tabla de acuerdo a la programación que tenga dicha función

1 2 3 4 5 6 7 8 9 10

columna 1 dato 1,1 dato 1,2 dato 1,3 dato 1,4 dato 1,5 dato 1,6 dato 1,7 dato 1,8 dato 1,9 dato 1,10

columna 2 dato 2,1 dato 2,2 dato 2,3 dato 2,4 dato 2,5 dato 2,6 dato 2,7 dato 2,8 dato 2,9 dato 2,10

columna 3 dato 3,1 dato 3,2 dato 3,3 dato 3,4 dato 3,5 dato 3,6 dato 3,7 dato 3,8 dato 3,9 dato 3,10

columna 4 dato 4,1 dato 4,2 dato 4,3 dato 4,4 dato 4,5 dato 4,6 dato 4,7 dato 4,8 dato 4,9 dato 4,10

Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Práctica 1: Realiza una lista de 3 posibles usos que podrías darle a una función que devuelve una tabla, compara la lista que creaste con la de tus compañeros para que entre todos creen una lista más grande.

Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Casos de uso: Hay dos sintaxis diferentes para crear UDFs que devuelven tablas. Primera sintaxis La primera sintaxis es la más sencilla. Se usa cuando la tabla a devolver puede obtenerse realizando solamente una instrucción SELECT. Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Casos de uso: Primera sintaxis Se puede usar la instrucción SELECT con: • JOIN para unir varias tablas y/o vistas.

• WHERE para filtrar la consulta. • UDFs que devuelven valores escalares.

Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Casos de uso: Segunda sintaxis La segunda sintaxis es más elaborada ya que le permite al programador definir las columnas que la función devuelve, con la facilidad de escribir todo el código necesario para crear funciones muy potentes y versátiles. Se usa cuando no nos es útil la primera sintaxis debido a la complejidad de los cálculos que se deben hacer para obtener la tabla. Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

¿Cuándo se debe usar una sintaxis en particular? Primera sintaxis

Segunda sintaxis

El uso de una u otra sintaxis nos lo da el caso de uso, es decir, depende de lo que se vaya a realizar, se verá si nos sirve la primera sintaxis, si ésta se queda corta, entonces usaremos la segunda sintaxis para crear nuestra función. Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Práctica 2: Crea una lista con las ventajas y desventajas que tienen para ti cada una de las dos sintaxis que se pueden usar para crear UDFs que devuelven tablas. Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Crear una función con valores de tabla. 1. Entra a SQL Server 2012 Express. 2. En el explorador de objetos selecciona el servidor y expande el árbol dando clic en el signo de más. 3. Selecciona la base de datos “bd_calificaciones”, expande el árbol > Programación > Funciones > Funciones con valores de tabla. 4. Clic derecho sobre “Funciones con valores de tabla”. 5. Del menú contextual selecciona “Nueva función con valores de tabla en línea”.

Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Práctica 3: Crea una UDF que devuelva una tabla con las credenciales y alumnos dados de alta en la tabla dbo.alumnos.

Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Práctica 3: Crea una UDF que devuelva una tabla con las credenciales y alumnos dados de alta en la tabla dbo.alumnos.

Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Modificar una función con valores de tabla. 1. Entra a SQL Server 2012 Express. 2. En el explorador de objetos selecciona el servidor y expande el árbol dando clic en el signo de más. 3. Selecciona la base de datos “bd_calificaciones”, expande el árbol > Programación > Funciones > Funciones con valores de tabla. 4. Clic derecho sobre la función que deseas modificar “dbo.fun_lista_alumnos”. 5. Del menú contextual selecciona “Modificar”.

Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Práctica 4: Modificar la UDF fun_lista_alumnos para hacer que devuelva también el promedio de cada alumno.

Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Práctica 4: Modificar la UDF fun_lista_alumnos para hacer que devuelva también el promedio de cada alumno.

Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Práctica 5: Crear una UDF que liste la credencial, nombre y promedio de los alumnos de una carrera en particular.

Ejecución de la función fun_lista_x_carrera para los alumnos de Programador de Sistemas y Redes (clave 1) Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Práctica 6: Crear una UDF que muestre las estadísticas por carrera: carrera, número de alumnos y promedio general de los alumnos. Se usan dos funciones auxiliares para obtener los datos que se requieren. La primera es fun_alumnos_x_carrera que es una UDF escalar que devuelve el número de alumnos que tiene una carrera, pasándole como parámetro la clave de la carrera.

Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Práctica 6: Crear una UDF que muestre las estadísticas por carrera: carrera, número de alumnos y promedio general de los alumnos. La segunda es fun_promedio_x_carrera que es una UDF escalar que devuelve el promedio general de la carrera, pasándole como parámetro la clave de la carrera. Como se puede ver esta función usa una instrucción SELECT con dos JOINs para poder obtener el promedio por carrera.

Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Práctica 6: Crear una UDF que muestre las estadísticas por carrera: carrera, número de alumnos y promedio general de los alumnos. Por último se crea la UDF llamada fun_estadísticas_x_carreras que devuelve una tabla con las estadísticas solicitadas.

Área de Investigación en Computación


INSTITUTO DE COMPUINGLÉS DE ORIENTE

Práctica 7 Con la segunda sintaxis crearemos una UDF que devuelva las estadísticas por calificaciones.

Área de Investigación en Computación


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.