You are on page 1of 3

Ingenieria de Bases de Datos

.
PROCEDIMIENTOS Y FUNCIONES ALMACENADOS
Cristian Camilo Mora Daza
Cristiandaza16@hotmail.com
RESUMEN: En este apartado se estudiara la teoría,
composición y aplicación los procedimientos almacenados y
funciones, la razón de ser de los procedimientos almacenados y
funciones es evitar que los clientes relancen los comandos
individuales y en su lugar referirse directamente al procedimiento
almacenado. [1] Cada uno de estos tambin son conocidos como
rutinas, subrutinas o subprogramas, est!n de lado del cliente
pero así mismo pueden ser llamados internamente. ["]
ABSTRACT: #n t$is section %e study t$e t$eory and
application composition stored procedures and functions, t$e
rationale of t$e stored procedures and functions is to prevent
clients relaunc$ individual commands and instead refer directly to
t$e stored procedure. [1] Eac$ of t$ese are also &no%n as
routines, subroutines or subprograms are client'side but t$at it
can be called internally.
1 INTRODUCCIÓN
Usualmente la manera recomendada para el
almacenamiento de procedimientos almacenados se lleva a cabo
en un servidor independiente para así mismo lograr redistribuir la
carga de operaciones se le conoce como servidor !" donde la
sigla !" signi#ica $!tore "rocedures%. &l servidor !" auda
tambi'n a controlar la sobrecarga de lado del cliente e(ecutando
las tareas de maor sobrecarga en el servidor !" para así
mismo lograr una disminuci)n en el uso de los recursos de
hard*are del servidor. !on usados tambi'n para el me(oramiento
de aplicaciones disminuen posibles cambios a #uturo. +,-
.
2 PROCEDIMIENTOS ALMACENADOS
Un "rocedimiento .lmacenado es un programa /ue se
almacena directamente en la base de datos usualmente son
escristos en el lengua(e d"01!20 para 3racle database o
tambi'n en "01"g!20 para "ostgre!20. +4- los !" son
instrucciones pre compiladas /ue se almacenan ba(o un nombre
se procesan como una unidad5 adicionalmente reciben
par6metros /ue les indican realizar multiples operaciones
retornar datos de diversas #ormas $principalmente como
par6metros de salida como con(untos de resultados%.
VENTAJAS
o Dise7o modular
o 0os !" pueden ser compartidos por aplicaciones /ue
acceden a la misma BD5 8educir el tama7o de las
aplicaciones eliminar el c)digo doble.
o 96cil mantenimiento.
o :o necesita de ser recompilado ni de relin;ear cuando es
actualizado el procedimiento debido a /ue cada cambio
es re#le(ado autom6ticamente en todas las aplicaciones.
o 0os !" se e(ecutan de lado del servidor no por el
cliente5 para así mismo reducir el tr6#ico de red el
rendimiento del hard*are del servidor.
o &st6n almacenados en los servidores asegurados
por las medidas tomadas en la instalaci)n5 lo /ue
impide /ue los usuarios normales puedan modi#icarlos
e incluso desconocen su e<istencia. &ste es un
elemento de gran valor en lo /ue a seguridad
respecta. +=-
DESVENTAJAS
• 0as aplicaciones /ue involucran la l)gica de negocio
elaboraci)n e<tensa podría suponer una carga
e<cesiva en el servidor si la l)gica se implement) en
su totalidad en los procedimientos almacenados.
• :o ponga toda la l)gica de negocio en los
procedimientos almacenados. &l mantenimiento la
agilidad de su aplicaci)n se convierte en un problema
cuando se debe modi#icar la l)gica de negocio en >?
!20.
• 0a escritura el mantenimiento de los procedimientos
almacenados es m6s a menudo en una tarea
especializada establece /ue no todos los
desarrolladores poseen. &sta situaci)n puede
introducir cuellos de botella en el programa de
desarrollo del proecto. +6-
CREACION DE UN SP
• Usando una BD .utos
o CREATE PROCEDURE sp@Ciudades
o .!
o !&0&C> DI!>I:C> Ciudad
o 983M ClienteA
• 0a BD .utos creara un !" llamado sp@Ciudades.
• &l !" podr6 ser invocado desde un punto < en una
aplicaci)n e<terna.
• "odr6 invocarse internamente.
• Benera un tabla temporal /ue muestra las ciudades
de la tabla cliente.
INVOCANDO UN SP
• !e invoca mediante el comando C &D&C seguido del
nombre del procedimientoE
o EXEC sp@CiudadesA
o &l resultado esF
1
Ingenieria de Bases de Datos
.
9igura 1. 8esultado !" sp@Ciudades
DECLARAR VARIABLES EN UN SP
o Mane(an variables de programaci)n de alto nivel.
o 0a variable se declara despu's de la palabra D&C0.8&
antes de su nombre con @.
o "ara asignar un valor a una variable se usa la palabra
!&>.
o !e pueden C!etearE a una variable los resultados de un
!20 /ue devuelva un registro.
o "uede ser declarada de salida $output%.
EJEMPLO
o ALTER PROCEDURE sp@Ciudades
.!
DECLARE @:ivel varchar$GH%
DECLARE @Ciudad varchar$GH%
SET @CiudadI$
!&0&C> >3" 1 Ciudad
983M Cliente as C
I::&8 J3I: .U>3M3KI0 .! . 3: ..8U> I
C.8U>
38D&8 BL .."8&CI3 D&!C%
IF @Ciudad I M!antiagoM
BEGIN
SET @:ivel I M1M
END
ELSE
SET @:ivel I MHM
SELECT @Nivel ! "Nivel"#
o Re$%&':
9igura N. 8esultado de Declarar Kariables.
DECLARAR PARAMETROS EN UN SP
o Mane(an variables de &1!.
o Uso vers6til de los !".
o !e de#inen antes de la palabra .!.
o :o necesitan declararse con D&C0.8&.
EJEMPLO
o ALTER PROCEDURE sp@!emestreMa<
@.nio varchar$GH%5 @!emestre varchar$GH% out
.!
SET @!emestre I $
!&0&C> !emestre@"recio.!emestre
983M $
!&0&C> L&.8$9&CO.% as .:O35
M3:>O$9&CO.%1PQ1 as !emestre5 "8&CI3
983M .U>3M3KI0
RO&8& L&.8$9&CO.%I@.nio
% as !emestre@"recio
B83U" BL !emestre@"recio.!emestre
O.KI:B sum$!emestre@"recio."8&CI3% I $
!&0&C> ma<$ma<imo.!uma@"eriodo%
983M$
!&0&C> sum$!emestre@"recio."8&CI3%
as !uma@"eriodo
983M $
!&0&C> L&.8$9&CO.% as .:O35
M3:>O$9&CO.%1PQ1 as !emestre5 "8&CI3
983M .U>3M3KI0
RO&8& L&.8$9&CO.%I@.nio
% as !emestre@"recio
B83U" BL !emestre@"recio.!emestre % as
ma<imo
%
% !&0&C> @!emestre as M!emestreMA
EJECUCION
o DECLARE @!emestre varchar$GH%
EXEC sp@!emestreMa< MNHHPM5 @!emestre OUTPUT
!&0&C> @!emestre
( FUNCIONES ALMACENADAS
0as #unciones almacenadas se comportan de una manera
mu similar a los !"5 de igual #orma son un con(unto de
comandos /ue pueden ser almacenados en el servidos.
o 0as #unciones $9U:C>I3:% di#ieren de los
procedimientos $"83C&DU8&!% enF
o !olo admiten par6metros de entrada a /ue los
par6metros de salida est6n Snicamente permitidos
en los !".
o 0a #unci)n retorna el valor /ue #ue de#inidos en la
declaraci)n. !iendo un tipo de dato admitido en el
motor de base de datos.
o 0as #unciones se pueden llamar con sentencia !20
como !&0&C>s5 I:!&8>s5 entre otras.
o Una #unci)n no devuelve un 8esult!et.
SINTAXIS:
+!20-
C8&.>& 9U:C>I3: nombre@de@#uncion
$ parametro15 parametroN5 ...5 parametroD %
8&>U8:! tipo 1T CO.8UI:>U903.>UD&CIM.0Uetc T1
B&BI:
.......
8&>U8: valor
&:D
+1!20-
EJEMPLO:
2
Ingenieria de Bases de Datos
.
+!20-
D&0IMI>&8 VV
C8&.>& 9U:C>I3: volumen$radio 903.>%
8&>U8:! 903.> D&>&8MI:I!>IC
B&BI:
D&C0.8& volume 903.>A
!&> volume I $41=%T"I$%T"3R$radius5N%A
8&>U8: volumeA
&:D VV
D&0IMI>&8 A +P-
Bi)li%*&+,
[1] «MySQL,» [En línea]. Available: http://dev.mysl.!"m/d"!/#e$man/%.&/es/st"#ed'p#"!ed(#es.html. [)ltim" a!!es": 1* Ma#+" ,&1-].
[,] [En línea]. Available: http://"!..(pm.es/!ien!ia'de'la'!"mp(ta!i"n'e'inteli/en!ia'a#ti$i!ial/$(ndament"s'p#"/#ama!i"n/!"ntenid"ste"#i!"s/"!.$(ndament"sp#"/#ama!i"ntema0.pd$. [)ltim" a!!es": 1* Ma#+" ,&1-].
[-] M(lti1ase, «M(lti1ase,» [En línea]. Available: http://....base1&&.!"m/n"taste!/pd$/b1&&2nt2mb-321&&%102v1.pd$. [)ltim" a!!es": 1* Ma#+" ,&1-].
[3] E. S. A. [En línea]. Available: https://..../""/le.!"m.!"/(#l4sa5t6#!t57656es#!5s6s"(#!e5.eb6!d516ved5&89EQ:7AA6(#l5http;-A;,:;,:esaaved#a.(bl"/.!l;,:a#!hiv"s
;,:<-&;,:ay(dantia202p#"!edimient"salma!enad"s.pd$6ei51=%>?@A11BCQ</S@,B9.1Q6(s/5A:Q78DE"0tMEF=0nGE0@:GH>I%b=vJ1SK/6si/,5i!/3-vM. [)ltim" a!!es": 1* Ma#+" ,&1-].
[%] C. E. [En línea]. Available: http://"s!a#ae.$iles.."#dp#ess.!"m/,&1,/&-/p#"!edimient"s'alma!enad"s.pd$. [)ltim" a!!es": 1* Ma#+" ,&1-].
[L] L(!ian", «L(a($.!"m,» 1- May" ,&&*. [En línea]. Available: http://l(a($.!"m/,&&*/&%/1-/$(n!i"nes'alma!enadas'en'mysl/. [)ltim" a!!es": 1* Ma#+" ,&1-].
3