bd 2 l subprogram as
TRANSCRIPT
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 1/39
INGENIERÍADE SOFTWARE
BASE DEDATOS II
Subprograma PL / SQLIntroducción
Base de
Datos II
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 2/39
INGENIERÍADE SOFTWARE
BASE DEDATOS IICARRERA DE
INGENIERÍAINFORMÁTICA Y DE SISTEMASAgenda
● Creación de Procedimientos
● Creación de Funciones
● Creación de Paquetes
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 3/39
INGENIERÍADE SOFTWARE
BASE DEDATOS II
Introducción
● Un subprograma: – Es un bloque PL/SQL nombrado que puede aceptar
parámetros y se le puede n!o"ar desde un entorno de
llamada – Es de dos tipos:
● Un procedimiento que reali!a una acción
● Una "unción que calcula un #alor
– Se basa en una estructura estándar de b#o$%e PL/SQL
– Es mod%#ar $ re%t#&ab#e$ e'tensb#e$ se puede mantener ypermite %acer el código m&s claro
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 4/39
INGENIERÍADE SOFTWARE
BASE DEDATOS II
Estructura de los Sub-ProgramasPL/SQL
<encabezado>
IS | AS
Sección de declaración
BEGIN
Sección ejecutable
EXCEPTION o!cional"
Sección de e#ce!cione$
EN%&
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 5/39
INGENIERÍADE SOFTWARE
BASE DEDATOS II
Procedimientos
● 'Qu( es un procedimiento)
– Un tipo de s%b(pro)rama que reali!a una acción
– Un procedimiento se puede a#ma"enar en la base
de datos$ como un ob*eto de# es$%ema$ parae*e"%tarse #arias #eces
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 6/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
Sintaxis para crear Procedimientos
● La opción *EPL+CE indica que si el procedimiento e,iste$ see#mnará y ser& reemp#a&ado con la nue#a #ersión creadapor la sentencia
● Los bloques PL/SQL se inician con BEGIN o la de"#ara"+n de !arab#es #o"a#es y "inali!a con E-. o ENDnombre,pro"edmento
C'EATE (O' 'EP)ACE* P'OCE%+'E no,bre-!rocedi,iento (!ara,etro. (,odo.* ti!odato./ !ara,etro0 (,odo0* ti!odato0/ 1"*IS | ASBlo2ue P)3S4)&
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 7/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
Parámetros formales y reales
● -arámetros .orma#es/ #ariables declaradasen la lista de par&metros de la especi"icacióndel subprograma
● -arámetros rea#es/ #ariables o e,presiones
re"erenciadas en la lista de par&metros de unallamada al subprograma
C'EATE P'OCE%+'E rai$e-$al!-id N+5BE'/ !-a,ount N+5BE'"
1
EN% rai$e-$al&
rai$e-$al6-id/ 0777"&
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 8/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
rear Procedimientos con Parámetros
-o se le puede asignar un#alor por de"ecto
-o se le puede asignar un#alor por de"ecto
Se le puede asignar un#alor por de"ecto
.ebe ser una #ariable.ebe ser una #ariablePar&metros realespueden ser literales$e,presiones$ constantes o#ariables iniciali!adas
0ariables iniciali!adas0ariables sin iniciali!ar Par&metros "ormalesact1an con constantes
Pasado %acia el subprograma2 retornado al
entorno de llamada
*etornado al entorno dellamada
El #alor se pasa al subprograma
Se debe especi"icar Se debe especi"icar 3odo por de"ecto
I- 4U54U5I-
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 9/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
Parámetros I!" E#emplo
C'EATE O' 'EP)ACE P'OCE%+'E rai$e-$alar8!-id IN e,!lo8ee$9e,!lo8ee-id:T;PE"
ISBEGIN
+P%ATE e,!lo8ee$
SET $alar8 $alar8 = .9.7 ?E'E e,!lo8ee-id !-id&EN% rai$e-$alar8&3
!-id .@
+mbiente de llamada Procedimiento raise6salary
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 10/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
Parámetros $%&" E#emplo
C'EATE O' 'EP)ACE P'OCE%+'E 2uer8-e,! !-id IN e,!lo8ee$9e,!lo8ee-id:T;PE/ !-na,e O+T e,!lo8ee$9la$t-na,e:T;PE/ !-$alar8 O+T e,!lo8ee$9$alar8:T;PE/
!-co,, O+T e,!lo8ee$9co,,i$$ion-!ct:T;PE"ISBEGIN SE)ECT la$t-na,e/ $alar8/ co,,i$$ion-!ct INTO !-na,e/ !-$alar8/ !-co,, 'O5 e,!lo8ee$ ?E'E e,!lo8ee-id !-id&EN% 2uer8-e,!&3
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 11/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
Parámetro $%&" E#emplo
!-id
!-na,e
!-$alar8
!-co,,
.@.
S5IT?
@77
79.D
+mbiente de llamada Procedimiento QUE*76E3P
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 12/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
'er Parámetros $%&
● Cree el procedimiento QUE*76E3P
● .eclare #ariables %ost$ e8ecute elprocedimiento QUE*76E3P e imprima el
#alor en la #ariable 96-+3E
A'IAB)E F-na,e A'C?A'00D" A'IAB)E F-$al N+5BE' A'IAB)E F-co,, N+5BE' EXEC+TE 2uer8-e,!.@./ F-na,e/ F-$al/ F-co,,"P'INT F-na,e
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 13/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
Parámetros I! $%&
C'EATE O' 'EP)ACE P'OCE%+'E Hor,at-!one!-!one-no IN O+T A'C?A'0"ISBEGIN
!-!one-no JJ || S+BST'!-!one-no/./K" || J"J || S+BST'!-!one-no//K" ||
JLJ || S+BST'!-!one-no/@"&EN% Hor,at-!one&3
!-!one-noJM77KK7D@DJ JM77"KKL7D@DJ
+mbiente de llamada Procedimiento "ormat6p%one
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 14/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
'er Parámetros I! $%&
A'IAB)E F-!one-no A'C?A'0.D"BEGINF-!one-no JM77KK7D@DJ&EN%&3P'INT F-!one-no
EXEC+TE Hor,at-!one F-!one-no"P'INT F-!one-no
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 15/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
()todos para pasar Parámetros
● -os"ona#: Listar los par&metros realesen el mismo orden que los par&metros"ormales
● Nombrado: Listar los par&metros realesen cualquier orden asoci&ndoles suspar&metros correspondientes
● Combna"+n: Listar algunos de lospar&metros reales como posicionales yotros como nombrados
S
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 16/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
$pción *E+A%L& para Parámetros
C'EATE O' 'EP)ACE P'OCE%+'E add-de!t !-na,e IN de!art,ent$9de!art,ent-na,e:T;PE
%EA+)T JunnonJ/ !-loc IN de!art,ent$9location-id:T;PE
%EA+)T .@77"ISBEGIN INSE'TINTO de!art,ent$de!art,ent-id/
de!art,ent-na,e/ location-id" A)+ES de!art,ent$-$e29NEXTA)/
!-na,e/ !-loc"&EN% add-de!t&3
BASE DE
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 17/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
E#emplo de paso de Parámetros
BEGIN add-de!t& add-de!tJT'AININGJ/ 0D77"& add-de!t!-loc > 077/ !-na,e > JE%+CATIONJ"& add-de!t!-loc > .077"&EN%&3
BASE DE
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 18/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
*eclarar Sub-Programas
C'EATE O' 'EP)ACE P'OCE%+'E lea6e-e,!0!-id IN e,!lo8ee$9e,!lo8ee-id:T;PE"IS P'OCE%+'E loF-e#ec IS BEGIN
INSE'T INTO loF-table u$er-id/ loF-date" A)+ES +SE'/ S;S%ATE"& EN% loF-e#ec&BEGIN %E)ETE 'O5 e,!lo8ee$ ?E'E e,!lo8ee-id !-id&
loF-e#ec&EN% lea6e-e,!0&3
BASE DE
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 19/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
In,ocar a un Sub-Programa desde unlo.ue PL/SQL anónimo
%EC)A'E6-id N+5BE' .K&
BEGIN
rai$e-$alar86-id"& LLin6oe !rocedureCO55IT&999
EN%&
BASE DE
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 20/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
In,ocar a un Procedimiento desdeotro Procedimiento
C'EATE O' 'EP)ACE P'OCE%+'E !roce$$-e,!$IS C+'SO' e,!-cur$or IS SE)ECT e,!lo8ee-id 'O5 e,!lo8ee$&
BEGIN O' e,!-rec IN e,!-cur$or )OOP rai$e-$alar8e,!-rec9e,!lo8ee-id"& EN% )OOP& CO55IT&
EN% !roce$$-e,!$&3
BASE DE
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 21/39
INGENIERÍA
DE SOFTWARE
BASE DEDATOS II
Eliminar Procedimientos
● Eliminar un procedimiento de la base de datos
● Sinta,is:
● E8emplo:
%'OP P'OCE%+'E nombre_procedimiento
%'OP P'OCE%+'E rai$e-$alar8&
BASE DE
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 22/39
INGENIERÍA
DE SOFTWARE
DATOS II
+unciones almacenadas
● Una "unción es un bloque PL/SQLnombrado que retorna un #alor
●
Una "unción se puede a#ma"enar enla base de datos como un ob*eto dees$%ema para su e8ecución"recuente
● Una "unción es n!o"ada como partede una e,presión
BASE DE
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 23/39
INGENIERÍA
DE SOFTWARE
DATOS II
Sintaxis para crear +unciones
C'EATE (O' 'EP)ACE* +NCTION Hunction-na,e(!ara,eter. (,ode.* datat8!e./
!ara,eter0 (,ode0* datat8!e0/9 9 9"*'ET+'N datat8!eIS|AS
P)3S4) Bloc&
BASE DE
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 24/39
INGENIERÍA
DE SOFTWARE
DATOS II
E#emplo de reación de +unciones
C'EATE O' 'EP)ACE +NCTION Fet-$al !-id IN e,!lo8ee$9e,!lo8ee-id:T;PE"'ET+'N N+5BE' IS
6-$alar8 e,!lo8ee$9$alar8:T;PE 7&BEGIN SE)ECT $alar8 INTO 6-$alar8 'O5 e,!lo8ee$ ?E'E e,!lo8ee-id !-id&
'ET+'N 6-$alar8&EN% Fet-$al&3
BASE DEDATOS II
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 25/39
INGENIERÍA
DE SOFTWARE
DATOS II
E#ecutar funciones
● In!o$%e a una "unción como partede una e'pres+n -01S20
●
Cree una !arab#e para a#ma"enar el #alor retornado
– E8ecute la "unción La #ariable
recibir& el !a#or retornado atra#(s de una sentencia *E5U*-
BASE DEDATOS II
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 26/39
INGENIERÍA
DE SOFTWARE
DATOS II
Parámetros I! y Parámetos $%&
A'IAB)E F-$alar8 N+5BE'
EXEC+TE F-$alar8 Fet-$al..@"
P'INT F-$alar8
!-id ..@
'ET+'N 6-$alar8
+mbiente de llamada Procedimiento get6sal
BASE DEDATOS II
' t # d + i d
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 27/39
INGENIERÍA
DE SOFTWARE
DATOS II
'enta#as de usar +unciones deusuario en expresiones PL/SQL
● E'tender SQL cuando las acti#idadessean muy comple8as$ tediosas o nodisponibles en SQL
● Puede n"rementar #a e."en"a cuandose utili!a en la cl&usula ;E*E para"iltrar los datos$ en #e! de "iltrar los datos
en la aplicación● Puede manp%#ar "adenas de
caracteres
BASE DEDATOS II
I + i i
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 28/39
INGENIERÍA
DE SOFTWARE
DATOS II
In,ocar +unciones en expresionesSQL" E#emplo
C'EATE O' 'EP)ACE +NCTION ta#!-6alue IN N+5BE'"'ET+'N N+5BE' IS
BEGIN'ET+'N !-6alue = 797M"&
EN% ta#&3SE)ECT e,!lo8ee-id/ la$t-na,e/ $alar8/ ta#$alar8"
'O5 e,!lo8ee$ ?E'E de!art,ent-id .77&
BASE DEDATOS II
t i i l i + i
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 29/39
INGENIERÍA
DE SOFTWARE
DATOS II
estricciones al in,ocar +uncionesen expresiones SQL● Para poder ser in#ocada en una e,presión
SQL$ una "unción debe:
– Ser una "unción a#ma"enada
– +ceptar sólo parámetros IN – +ceptar como par&metros sólo tpos de datos
!á#dos en S20$ no sólo en PL/SQL
– Retornar tpos de datos !á#dos en S20$ no tipos
que sólo sean #&lidos en PL/SQL
BASE DEDATOS II
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 30/39
INGENIERÍA
DE SOFTWARE
Sintaxis para eliminar +unciones
● Sinta,is:
● E8emplo:
– 5odos los pr!#e)os "on"eddos sobre una"unción se re!o"an si se elimina la "unción
– La sinta,is de C*E+5E 4* *EPL+CE esequi#alente a la sinta,is de eliminar la "unción yrecrearla Los pr!#e)os "on"eddos sobre la"unción permane"en )%a# cuando si usa esta
sinta,is
%'OP +NCTION no,bre-Huncion
%'OP +NCTION Fet-$al&
BASE DEDATOS II
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 31/39
INGENIERÍA
DE SOFTWARE
Pa.uetes
● Un paquete es un ob*eto de es$%ema quea)r%pa de "orma #+)"a: tipos$ elementos ysubprogramas relacionados de PL/SQL
●
Partes: – Espe"."a"+n <Speci"ication=
● Inter"a! de la aplicación$ declara tipos$#ariables$ contantes$ e,cepciones$ cursores y
subprogramas disponibles – C%erpo <>ody=
● .e"ine completamente cursores ysubprogramas$ implementa la especi"icación
BASE DEDATOS II
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 32/39
INGENIERÍA
DE SOFTWARE
rear especificaciones de pa.uetesC'EATE (O' 'EP)ACE* PACAGE !acaFe-na,e (A+T?I% QC+''ENT-+SE' | %EINE'R* QIS | ASR (P'AG5A SE'IA));-'E+SAB)E&* (collection-t8!e-deHinition 999* (record-t8!e-deHinition 999* ($ubt8!e-deHinition 999* (collection-declaration 999*
(con$tant-declaration 999* (e#ce!tion-declaration 999* (object-declaration 999* (record-declaration 999* (6ariable-declaration 999* (cur$or-$!ec 999*
(Hunction-$!ec 999* (!rocedure-$!ec 999* (call-$!ec 999* (P'AG5A 'EST'ICT-'EE'ENCESa$$ertion$" 999*EN% (!acaFe-na,e*&
BASE DEDATOS II
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 33/39
INGENIERÍA
DE SOFTWARE
rear cuerpo de pa.uetes(C'EATE (O' 'EP)ACE* PACAGE BO%; !acaFe-na,e QIS | ASR
(P'AG5A SE'IA));-'E+SAB)E&* (collection-t8!e-deHinition 999* (record-t8!e-deHinition 999* ($ubt8!e-deHinition 999* (collection-declaration 999* (con$tant-declaration 999*
(e#ce!tion-declaration 999* (object-declaration 999* (record-declaration 999* (6ariable-declaration 999* (cur$or-bod8 999* (Hunction-$!ec 999* (!rocedure-$!ec 999* (call-$!ec 999*(BEGIN $e2uence-oH-$tate,ent$*EN% (!acaFe-na,e*&*
BASE DEDATOS II
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 34/39
INGENIERÍA
DE SOFTWARE
E#emplo de especificación
C'EATE O' 'EP)ACE PACAGE e,!-action$ AS LL $!ec T;PE E,!'ecT8! IS 'ECO'% e,!-id INT/ $alar8 'EA)"& C+'SO' de$c-$alar8 'ET+'N E,!'ecT8!& P'OCE%+'E ire-e,!lo8ee ena,e A'C?A'0/ job A'C?A'0/
,Fr N+5BE'/ $al N+5BE'/ co,, N+5BE'/ de!tno N+5BE'"& P'OCE%+'E Hire-e,!lo8ee e,!-id N+5BE'"&EN% e,!-action$&
BASE DEDATOS II
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 35/39
INGENIERÍA
DE SOFTWARE
E#emplo de cuerpo de pa.ueteC'EATE O' 'EP)ACE PACAGE BO%; e,!-action$ AS LL bod8
C+'SO' de$c-$alar8 'ET+'N E,!'ecT8! IS SE)ECT e,!no/ $al 'O5 e,! O'%E' B; $al %ESC& P'OCE%+'E ire-e,!lo8ee ena,e A'C?A'0/ job A'C?A'0/ ,Fr N+5BE'/ $al N+5BE'/
co,, N+5BE'/ de!tno N+5BE'" IS BEGIN INSE'T INTO e,! A)+ES e,!no-$e29NEXTA)/ ena,e/ job/ ,Fr/ S;S%ATE/ $al/ co,,/ de!tno"& EN% ire-e,!lo8ee&
P'OCE%+'E Hire-e,!lo8ee e,!-id N+5BE'" IS BEGIN %E)ETE 'O5 e,! ?E'E e,!no e,!-id& EN% Hire-e,!lo8ee&EN% e,!-action$&
BASE DEDATOS II
0acer referencia a contenidos de
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 36/39
INGENIERÍADE SOFTWARE
0acer referencia a contenidos depa.uete
!acaFe-na,e9t8!e-na,e !acaFe-na,e9ite,-na,e !acaFe-na,e9$ub!roFra,-na,e !acaFe-na,e9call-$!ec-na,e
S4)> CA)) e,!-action$9ire-e,!lo8eeJTATEJ/ JC)E'J/ 999"&
1BEGIN 1 %B5S-O+TP+T9P+T-)INEJte ,e$$aFeJ"& 1EN%&
BASE DEDATOS II
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 37/39
INGENIERÍADE SOFTWARE
esumen
● Los subprogramas locales son programas quese de"inen dentro de la sección de declaraciónde otro programa
●
Los procedimientos se pueden in#ocar desdecualquier %erramienta o lengua8e que soportePL/SQL
● .eber?a estar atento del e"ecto de e,cepciones
controladas y no controladas sobretransacciones y llamadas a procedimientos
BASE DEDATOS II
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 38/39
INGENIERÍADE SOFTWARE
esumen
● Puede remo#er procedimientos de la base dedatos con el comando .*4P P*4CE.U*E
● Los procedimientos pueden ser#ir como
bloques de construcción para una aplicación● Una "unción es un bloque PL/SQL nombrado
que debe retornar un #alor
●
Una "unción se crea utili!ando la sinta,isC*E+5E FU-C5I4-
BASE DEDATOS II
7/25/2019 Bd 2 l Subprogram As
http://slidepdf.com/reader/full/bd-2-l-subprogram-as 39/39
INGENIERÍADE SOFTWARE
esumen
● Una "unción se in#oca como parte de unae,presión
● Una "unción almacenada en la base de datos
se puede utili!ar en las sentencias SQL● Una "unción se puede eliminar de la base de
datos con la sinta,is .*4P FU-C5I4-
●
9eneralmente$ se utili!a un procedimiento parareali!ar una acción y una "unción para calcularun #alor