You are on page 1of 15

Creacin de

procedimientos
almacenados y funciones

Perspectiva general de la leccin


En esta leccin aprendern sobre:
Funciones
Funciones de agregado
Funciones escalares
Funciones definidas por el usuario
Procedimientos de almacenamiento.
Beneficios de los procedimientos de almacenamiento.

Qu es una funcin?
Es la accin llevada a cabo por un programa o rutina.
Una funcin es una rutina que regresa un valor.
Rutina: cualquier seccin de cdigo que se puede invocar
(ejecutar) dentro de un programa. Una rutina generalmente
tiene un nombre (identificador) asociado al mismo y se
ejecuta al hacerse referencia a ese nombre. Trminos
relacionados: funcin, procedimiento y subrutina.
Las funciones y rutinas pueden ser sinnimos y son
comandos que regresan un valor.

Funciones de agregado
Regresan un solo valor calculado de los valores de una
columna.
Ejemplo:
AVG() Regresa un valor promedio
SELECT AVG (nombre_columna) FROM nombre_tabla
COUNT() Regresa el nmero de filas
SELECT COUNT (nombre_columna) FROM nombre_tabla
TOP 1 Regresa el primer valor
SELECT TOP 1 (nombre_columna) FROM nombre_tabla

Funciones de agregado (continuacin)


MAX() Regresa el valor mayor
SELECT MAX (nombre_columna) FROM
nombre_tabla
MIN() Regresa el valor menor
SELECT MIN (nombre_columna) FROM
nombre_tabla
SUM() Regresa la suma
SELECT SUM (nombre_columna) FROM nombre_tabla

Funciones escalares (continuacin)


LEN() Regresa la longitud de un campo de texto
SELECT LEN (nombre_columna) FROM nombre_tabla
ROUND() Redondea un campo numrico al nmero de decimales
especificados
SELECT ROUND (nombre_columna, decimales) FROM nombre_tabla

Funciones definidas por el usuario


Las funciones definidas por el usuario son rutinas en SQL que
pueden aceptar parmetros y regresan ya sea un valor o
una tabla.
Ventaja se pueden utilizar en sentencias Select, Where o
Case.
Tambin se pueden utilizar para crear uniones.
No se pueden utilizar para modificar la informacin de la tabla
base.

Funciones definidas por el usuario (continuacin)


Para crear una funcin:
create Function Suma(@N1 int, @N2 int)
RETURNS Int
AS
BEGIN
Return (@N1 + @N2)
END

Para ejecutarlas (continuacin)


print dbo.Suma(5,8)

Funciones que devuelven tabla


de informacin
Create Function Tabla(@codigo char(6))
Returns Table
AS
Return (
select descripcion , precio from suministro
where codigo=@codigo
)
--Ejecutar
Select * From dbo.Tabla('S00006')

Procedimientos de almacenamiento
Grupo pre-compilado de sentencias SQL escritas por usuarios y
guardadas en una base de datos.
Sentencia(s) SQL generadas por el usuario que se guardan en la
base de datos.
Para crear un procedimiento de almacenamiento:

CREATE PROCEDURE [sp_Nombre procedimiento]


AS
SELECT * FROM [Tabla]
sp= procedimiento de almacenamiento (estndar
en la asignacin de nombres)

Procedimientos de almacenamiento
(continuacin)
Para crear un procedimiento de almacenamiento para varios
campus

CREATE PROCEDURE sp_clase


@campusubicacion varchar(30)
AS
SELECT NombreClase, SeccionClase
FROM SemestreActual
WHERE campus = @campusubicacion

Procedimientos de almacenamiento
(continuacin)
Para llamar a un procedimiento de almacenamiento
EXEC [nombe procedimiento] ([variables entrada])
EXECUTE sp_clase Central
Este procedimiento de almacenamiento regresar una lista de dos
elementos o una vista (NombreClase, SeccionClase) de todas las clases
en el campus Central.

Beneficios de los procedimientos


de almacenamiento
Velocidad: Los procedimientos de almacenamiento son precompilados.
Reutilizacin de cdigo: Los procedimientos de
almacenamientos frecuentemente involucran cdigo
complejo que slo se debe escribir una vez.
Seguridad: Se pueden otorgar permisos para los
procedimientos de almacenamiento a la vez que se
restringen para las tablas subyacentes.
Menor trfico entre el cliente y el servidor: La consulta
se almacena en el servidor y slo se llama al procedimiento
por lo que el trfico en el servidor disminuye.

Repaso de la leccin
Evaluacin para discusin
Cul es la diferencia bsica entre una funcin y un
procedimiento de almacenamiento?
Cul sera la llamada del procedimiento de almacenamiento
para la suma total de la cantidad de una orden especifica?
Qu se le puede agregar a nuestro procedimiento de
almacenamiento sp_clase para hacerlo ms til?

You might also like