demo codigos
TRANSCRIPT
-
7/23/2019 DEMO Codigos
1/146
DEMO
1.
CREATE OR REPLACE PACKAGE state_tax IS
ma CONSTANT NUMBER := 0.05;
n CONSTANT NUMBER := 0.0!;
n" CONSTANT NUMBER := 0.0#;
$a CONSTANT NUMBER := 0.05;
%& CONSTANT NUMBER := 0.0';
EN( state_tax;
2.
SET SER)EROUTPUT ON
BEGIN
(BMS_OUTPUT.PUT_LINE*+T,e sa-es tax n / 5.'0 1n Massa&,2setts 1s + 335.'0 4 state_tax.ma;
EN(;
3.
SET SER)EROUTPUT ON
CREATE OR REPLACE PROCE(URE -1st_em$-ees*$_%e$t1% NUMBER IS
T6PE em$_7e8&s7_t$e IS RE9 CURSOR;
&27_em$ em$_7e8&s7_t$e;
7e&_em$ em$-eesROT6PE;
-
7/23/2019 DEMO Codigos
2/146
9ETC> &27_em$ INTO 7e&_em$;
E?IT >EN &27_em$NOT9OUN(;
(BMS_OUTPUT.PUT_LINE*7e&_em$.%e$a7tment_1% 33
+ + 33 7e&_em$.-ast_name;
EN( LOOP;
CLOSE &27_em$;
EN(;
@
4.
SET SER)EROUTPUT ON
CREATE OR REPLACE PROCE(URE $7&ess_%ata IS
T6PE &27_7e8_t$e IS RE9 CURSOR; ea 7e8 &27s7
T6PE &27_7e8_em$_t$e IS RE9 CURSOR st7nD 7e8. &27s7
RETURN em$-eesROT6PE;
-
7/23/2019 DEMO Codigos
3/146
(BMS_OUTPUT.PUT_LINE*7e&_%e$t.%e$a7tment_1% 33+ +337e&_%e$t.%e$a7tment_name;
EN( LOOP;
CLOSE O ON
ens27e t,e %em ta-e 1s %e-ete% $717 t sta7t1nD t,1s %emnst7at1n
$a2se F$7ess ente7
(ROP TABLE em$-ees_ta-e;
$a2se F$7ess ente7
&7eate t,e ta-e 2se% 87 t,1s %emnst7at1n
CREATE TABLE em$-ees_ta-e
AS se-e&t e.EMPLO6EE_I(
He.9IRST_NAME
He.LAST_NAME
He.SALAR6
HOB_I(
H".MIN_SALAR6
H".MA?_SALAR6
87m em$-ees e OIN "s "USING *"_1%;
$a2se F$7ess ente7
a%% a &,e& &nst7a1nt t t,e %emnst7at1n ta-e
ALTER TABLE em$-ees_ta-e
A(( CONSTRAINT EMP_C>K_SALAR6
C>ECK *SALAR6 F= MA?_SALAR6;
-
7/23/2019 DEMO Codigos
4/146
$a2se F$7ess ente7
&7eate a t71DDe7 t 7est71&t sa-a71es t t,e
max1m2m 87 t,e17 " t1t-e
CREATE OR REPLACE TRIGGER 7est71&t_sa-a7
BE9ORE UP(ATE O9 sa-a7 ON em$-ees_ta-e
9OR EAC> RO
>EN *NE.sa-a7 OL(.max_sa-a7
BEGIN
:NE.sa-a7 := :OL(.max_sa-a7;
EN(;
@
(ECLARE
%eJne a 7e&7% &nta1n1nD em$-ee 1n87mat1n
T6PE EMP_REC IS RECOR(
*
EMPLO6EE_I( em$-ees.em$-ee_1%T6PE
H9IRST_NAME em$-ees.J7st_nameT6PE
HLAST_NAME em$-ees.-ast_nameT6PE
HSALAR6 em$-ees.sa-a7T6PE
HOB_I( em$-ees."_1%T6PE
HMIN_SALAR6 "s.m1n_sa-a7T6PE
HMA?_SALAR6 "s.m1n_sa-a7T6PE
;
-_T,1sEm$-ee EMP_REC;
-_&2nte7 BINAR6_INTEGER := ;
T6PE -1st_8_em$-ees_t IS TABLE O9 -_T,1sEm$-eeT6PE
IN(E? B6 PLS_INTEGER;
-1st_8_em$-ees -1st_8_em$-ees_t;
-
7/23/2019 DEMO Codigos
5/146
BIG_RAISE NUMBER;
1 NUMBER;
BEGIN
1n&7ease sa-a7 000 t,1s 1-- $2t sme 7e&7%s
-
7/23/2019 DEMO Codigos
6/146
33 -1st_8_em$-ees *1.9IRST_NAME 33 + +
33 -1st_8_em$-ees *1.SALAR6 33 + +
33 -1st_8_em$-ees *1.MA?_SALAR6 33 + + ;
EN( I9;
1 := -1st_8_em$-ees.NE?T *1;
EN( LOOP;
G1ERE EMPLO6EE_I( = -1st_8_em$-ees *1.EMPLO6EE_I(;
1 := -1st_8_em$-ees.NE?T *1;
EN( LOOP;
Let+s -1st a-- t,e
-
7/23/2019 DEMO Codigos
7/146
6.
In 7%e7 t e a-e t 72n t,1s exam$-eH 2 nee% t ens27e t,at 2 ,a
-
7/23/2019 DEMO Codigos
8/146
ORA_(ICT_OB_T6PEHORA_(ICT_OB_NAMEH
ORA_SER)ER_ERROR*HSTMTHORA_SER)ER_ERROR_MSG*;
EN(;
7.ALTER SESSION SET $-s-_&m$1-e7_aDs = +INTERPRETE(+;
SET SER)EROUTPUT ON
CREATE OR REPLACE PROCE(URE aste_t1me IS
-
7/23/2019 DEMO Codigos
9/146
SET SER)EROUTPUT ON
ALTER SESSION SET $-s-_&m$1-e7_aDs = +NATI)E+;
ALTER PROCE(URE aste_t1me COMPILE;
E?EC aste_t1me;
E?EC aste_t1me;
.
CREATE OR REPLACE PACKAGE m_$D AS
SUBT6PE m_7ea- IS
/I9 (BMS_(B_)ERSION.)ERSION F /T>EN NUMBER; &,e& %ataaseEN
m_$1 := .0'0!!00!00#'''!'#;
m_e := .#!!!!5055'0!##5''##5;
/ELSE
m_$1 := .0'0!!00!00#'''!'#%;
m_e := .#!!!!5055'0!##5''##5%;
/EN(
EN( m_$D;@
LABS
.
SET EC>O O99
@4 S&71$t t 21-% t,e )1%e A$$-1&at1n *Pa7t 21-%
-
7/23/2019 DEMO Codigos
10/146
87 t,e O7a&-e Int7%2&t1n t O7a&-e 1t, P7&e%27e B21-%e7 &27se.
C7eate% : (e K7ame7 C7eat1n %ate: @0@5
Last 2$ate%: @@'
M%1Je% NaDa
-
7/23/2019 DEMO Codigos
11/146
H t1t-e )ARC>AR*'0
CONSTRAINT t1t-e_nn NOT NULL
H %es&71$t1n )ARC>AR*00
CONSTRAINT t1t-e_%es&_nn NOT NULL
H 7at1nD )ARC>AR*
CONSTRAINT t1t-e_7at1nD_& C>ECK *7at1nD IN *+G+H+PG+H+R+H+NC#+H+NR+
H &ateD7 )ARC>AR*0 (E9AULT +(RAMA+
CONSTRAINT t1t-e_&ateD_& C>ECK *&ateD7 IN*+(RAMA+H+COME(6+H+ACTION+H+C>IL(+H+SCI9I+H+(OCUMENTAR6+
H 7e-ease_%ate (ATE
@
CREATE TABLE TITLE_COP6
*&$_1% NUMBER*0
H t1t-e_1% NUMBER*0
CONSTRAINT &$_t1t-e_1%_8
RE9ERENCES t1t-e*t1t-e_1%
H stat2s )ARC>AR*5
CONSTRAINT &$_stat2s_nn NOT NULL
CONSTRAINT &$_stat2s_& C>ECK *stat2s IN *+A)AILABLE+H+(ESTRO6E(+H
+RENTE(+H +RESER)E(+
H CONSTRAINT &$_t1t-e_1%_$ PRIMAR6 KE6*&$_1%H t1t-e_1%
@
CREATE TABLE RENTAL
*_%ate (ATE (E9AULT S6S(ATE
H &$_1% NUMBER*0
H meme7_1% NUMBER*0
CONSTRAINT 7enta-_m7_1%_8 RE9ERENCES meme7*meme7_1%
H t1t-e_1% NUMBER*0
H a&t_7et_%ate (ATE
-
7/23/2019 DEMO Codigos
12/146
H ex$_7et_%ate (ATE (E9AULT S6S(ATE
H CONSTRAINT 7enta-_&$_t1t-e_1%_8 9OREIGN KE6 *&$_1%H t1t-e_1%
RE9ERENCES t1t-e_&$*&$_1%Ht1t-e_1%
H CONSTRAINT 7enta-_1%_$ PRIMAR6 KE6*_%ateH &$_1%H t1t-e_1%Hmeme7_1%
@
CREATE TABLE RESER)ATION
*7es_%ate (ATE
H meme7_1% NUMBER*0
H t1t-e_1% NUMBER*0
H CONSTRAINT 7es_1%_$ PRIMAR6 KE6*7es_%ateH meme7_1%H t1t-e_1%
@
PROMPT Ta-es &7eate%.
(ROP SEUENCE t1t-e_1%_se;
(ROP SEUENCE meme7_1%_se;
PROMPT C7eat1nD Se2en&es...
CREATE SEUENCE meme7_1%_se
START IT> 00
NOCAC>E
@
CREATE SEUENCE t1t-e_1%_se
START IT>
NOCAC>E
@
PROMPT Se2en&es &7eate%.
-
7/23/2019 DEMO Codigos
13/146
PROMPT R2n 21-%
-
7/23/2019 DEMO Codigos
14/146
EMPLO6EE: M27Ds ea7ns: 5!00
EMPLO6EE: Ra"s ea7ns: 500
EMPLO6EE: Pate- ea7ns: 500
EMPLO6EE: Se ea7ns: #00
EMPLO6EE: St1-es ea7ns: 00
EMPLO6EE: La%1D ea7ns: '00
EMPLO6EE: P,1-tane7 ea7ns: 00
EMPLO6EE: Gee ea7ns: 00
EMPLO6EE: RDe7s ea7ns: 00
EMPLO6EE: Ma--1n ea7ns: 00
EMPLO6EE: G7ant ea7ns: '00 EMPLO6EE: OCnne-- ea7ns: '00
EMPLO6EE: 9eene ea7ns: 000
EMPLO6EE: a-s, ea7ns: 00
EMPLO6EE: nes ea7ns: !00
EMPLO6EE: M&Ca1n ea7ns: 00
EMPLO6EE: E
-
7/23/2019 DEMO Codigos
15/146
EMPLO6EE: (a
-
7/23/2019 DEMO Codigos
16/146
EMPLO6EE: K2ma7 ea7ns: '00
EMPLO6EE: Bates ea7ns: #00
EMPLO6EE: Sm1t, ea7ns: #00
EMPLO6EE: 9x ea7ns: '00
EMPLO6EE: B-m ea7ns: 0000
EMPLO6EE: Oe7 ea7ns: 500
EMPLO6EE: Ban%a ea7ns: '00
EMPLO6EE: Sm1t, ea7ns: 000
EMPLO6EE: >a771s ea7ns: 000
EMPLO6EE: K1nD ea7ns: 0000
EMPLO6EE: Cam7a2-t ea7ns: #500 EMPLO6EE: >a-- ea7ns: 000
EMPLO6EE: T2&e7 ea7ns: 0000
EMPLO6EE: Cam7a2-t ea7ns: 000
EMPLO6EE: Pa7tne7s ea7ns: 500
(EPARTMENT: 0
EMPLO6EE: K1nD ea7ns: 000
EMPLO6EE: K&,,a7 ea7ns: #000
EMPLO6EE: (e >aan ea7ns: #000
(EPARTMENT: 00
EMPLO6EE: G7eene7D ea7ns: 000
EMPLO6EE: 9a
-
7/23/2019 DEMO Codigos
17/146
CREATE OR REPLACE PROCE(URE 2n7ea&,a-e_&%e AS
&_x CONSTANT BOOLEAN := TRUE;
BEGIN
I9 &_x T>EN
(BMS_OUTPUT.PUT_LINE*+TRUE+;
ELSE
(BMS_OUTPUT.PUT_LINE*+9ALSE+;
EN( I9;
EN( 2n7ea&,a-e_&%e;
@
5.SET SER)EROUTPUT ON
ALTER SESSION SET PLSL_CC9LAGS = +m_%e2D:9ALSEHm_t7a&1nD:9ALSE+;
CREATE OR REPLACE PACKAGE m_$D AS
SUBT6PE m_7ea- IS
/I9 (BMS_(B_)ERSION.)ERSION F 0 /T>EN NUMBER; &,e& %ataaseEN
m_$1 := .0'0!!00!00#'''!'#;
m_e := .#!!!!5055'0!##5''##5;
/ELSE
m_$1 := .0'0!!00!00#'''!'#%;
m_e := .#!!!!5055'0!##5''##5%;
/EN(
EN( m_$D;
-
7/23/2019 DEMO Codigos
18/146
@
CREATE OR REPLACE PROCE(URE &17&-e_a7ea*7a%12s m_$D.m_7ea- IS
m_a7ea m_$D.m_7ea-;
m_%atat$e )ARC>AR*0;
BEGIN
m_a7ea := m_$D.m_$1 4 7a%12s 4 7a%12s;
(BMS_OUTPUT.PUT_LINE*+Ra%12s: + 33 TO_C>AR*7a%12s
33 + A7ea: + 33 TO_C>AR*m_a7ea ;
/I9 //m_%e2D /T>EN 18 m_%e2D 1s TRUEH 72n sme %e2DD1nD &%e SELECT (ATA_T6PE INTO m_%atat$e 9ROM USER_ARGUMENTS
>ERE OBECT_NAME = +CIRCLE_AREA+ AN( ARGUMENT_NAME =+RA(IUS+;
(BMS_OUTPUT.PUT_LINE*+(atat$e 8 t,e RA(IUS a7D2ment 1s: + 33m_%atat$e;
/EN(
EN(;
@
'.
(ECLARE
t,e $a&aDe_text AR*#'#;
9UNCTION Dene7ate_s$e& *$Dname )ARC>AR RETURN )ARC>AR AS
BEGIN
RETURN +CREATE PACKAGE + 33 $Dname 33 + AS
PROCE(URE 7a1se_sa-a7 *em$_1% NUMBERH am2nt NUMBER;
PROCE(URE J7e_em$-ee *em$_1% NUMBER;
EN( + 33 $Dname 33 +;+;
EN( Dene7ate_s$e&;
9UNCTION Dene7ate_% *$Dname )ARC>AR RETURN )ARC>AR AS
-
7/23/2019 DEMO Codigos
19/146
BEGIN
RETURN +CREATE PACKAGE BO(6 + 33 $Dname 33 + AS
PROCE(URE 7a1se_sa-a7 *em$_1% NUMBERH am2nt NUMBER IS
BEGIN
UP(ATE em$-ees SET sa-a7 = sa-a7 am2nt >ERE em$-ee_1%= em$_1%;
EN( 7a1se_sa-a7;
PROCE(URE J7e_em$-ee *em$_1% NUMBER IS
BEGIN
(ELETE 9ROM em$-ees >ERE em$-ee_1% = em$_1%;
EN( J7e_em$-ee;
EN( + 33 $Dname 33 +;+;
EN( Dene7ate_%;
#.
Rem
Rem />ea%e7: 2t-%t7ee.s-H< . @0@' ':: RKOOI Sta /
Rem
Rem C$71D,t *& O7a&-e C7$7at1n
Rem NAME
Rem %e$t7ee.s- S, "e&ts 7e&27s1
-
7/23/2019 DEMO Codigos
20/146
Rem se-e&t 4 87m %e$t7ee 7%e7 seW;
Rem
Rem A $7ett1e7 a t %1s$-a t,1s 1n87mat1n t,an
Rem se-e&t 4 87m %e$t7ee 7%e7 seW;
Rem 1s
Rem se-e&t 4 87m 1%e$t7ee;
Rem T,1s s,s t,e %e$en%en& 7e-at1ns,1$
-
7/23/2019 DEMO Codigos
21/146
"e&t_1% n2me7H
7e8e7en&e%_"e&t_1% n2me7H
nest_-e
-
7/23/2019 DEMO Codigos
22/146
set e&, n
REM T,1s
-
7/23/2019 DEMO Codigos
23/146
REM T,1s
-
7/23/2019 DEMO Codigos
24/146
(EPARTMENT: 0
EMPLO6EE: ,a-en ea7ns: 00
(EPARTMENT: 0
EMPLO6EE: >a7tste1n ea7ns: 000
EMPLO6EE: 9a ea7ns: '000
(EPARTMENT: 0
EMPLO6EE: Ra$,ae- ea7ns: 000
EMPLO6EE: K, ea7ns: 00
EMPLO6EE: Ba1%a ea7ns: 00
EMPLO6EE: C-mena7es ea7ns: 500
EMPLO6EE: >1m27 ea7ns: '00 EMPLO6EE: T1as ea7ns: !00
(EPARTMENT: 0
EMPLO6EE: Ma
-
7/23/2019 DEMO Codigos
25/146
EMPLO6EE: P,1-tane7 ea7ns: 00
EMPLO6EE: Gee ea7ns: 00
EMPLO6EE: RDe7s ea7ns: 00
EMPLO6EE: Ma--1n ea7ns: 00
EMPLO6EE: G7ant ea7ns: '00
EMPLO6EE: OCnne-- ea7ns: '00
EMPLO6EE: 9eene ea7ns: 000
EMPLO6EE: a-s, ea7ns: 00
EMPLO6EE: nes ea7ns: !00
EMPLO6EE: M&Ca1n ea7ns: 00
EMPLO6EE: E
-
7/23/2019 DEMO Codigos
26/146
EMPLO6EE: A2st1n ea7ns: !00
EMPLO6EE: L7ent ea7ns: 00
(EPARTMENT: #0
EMPLO6EE: Bae7 ea7ns: 0000
(EPARTMENT: !0
EMPLO6EE: R2sse-- ea7ns: 000
EMPLO6EE: E77a271 ea7ns: 000
EMPLO6EE: V-te ea7ns: 0500
EMPLO6EE: Be7nste1n ea7ns: 500
EMPLO6EE: O-sen ea7ns: !000
EMPLO6EE: T2
-
7/23/2019 DEMO Codigos
27/146
EMPLO6EE: Ban%a ea7ns: '00
EMPLO6EE: Sm1t, ea7ns: 000
EMPLO6EE: >a771s ea7ns: 000
EMPLO6EE: K1nD ea7ns: 0000
EMPLO6EE: Cam7a2-t ea7ns: #500
EMPLO6EE: >a-- ea7ns: 000
EMPLO6EE: T2&e7 ea7ns: 0000
EMPLO6EE: Cam7a2-t ea7ns: 000
EMPLO6EE: Pa7tne7s ea7ns: 500
(EPARTMENT: 0
EMPLO6EE: K1nD ea7ns: 000 EMPLO6EE: K&,,a7 ea7ns: #000
EMPLO6EE: (e >aan ea7ns: #000
(EPARTMENT: 00
EMPLO6EE: G7eene7D ea7ns: 000
EMPLO6EE: 9a
-
7/23/2019 DEMO Codigos
28/146
INSERT INTO "s *"_1%H "_t1t-e
)ALUES *$_"1%H $_"t1t-e;
COMMIT;
EN( a%%_";
@
.
E?ECUTE a%%_" *+IT_(BA+H +(ataase A%m1n1st7at7+
SELECT 4 9ROM "s >ERE "_1% = +IT_(BA+;
.
E?ECUTE a%%_" *+ST_MAN+H +St& ManaDe7+
.CREATE OR REPLACE PROCE(URE 2$%_"*
$_"1% IN "s."_1%T6PEH
$_"t1t-e IN "s."_t1t-eT6PE IS
BEGIN
UP(ATE "s
SET "_t1t-e = $_"t1t-e
>ERE "_1% = $_"1%;
I9 SLNOT9OUN( T>EN
RAISE_APPLICATION_ERROR*00H +N " 2$%ate%.+;
EN( I9;
EN( 2$%_";
@
5.
E?ECUTE 2$%_" *+IT_(BA+H +(ata A%m1n1st7at7+
SELECT 4 9ROM "s >ERE "_1% = +IT_(BA+;
'.
E?ECUTE 2$%_" *+IT_EB+H +e Maste7+
SELECT 4 9ROM "s >ERE "_1% = +IT_EB+;
#.
CREATE OR REPLACE PROCE(URE %e-_" *$_"1% "s."_1%T6PE IS
BEGIN
-
7/23/2019 DEMO Codigos
29/146
(ELETE 9ROM "s
>ERE "_1% = $_"1%;
I9 SLNOT9OUN( T>EN
RAISE_APPLICATION_ERROR*00H +N "s %e-ete%.+;
EN( I9;
EN( (EL_OB;
@
!.
E?ECUTE %e-_" *+IT_(BA+
SELECT 4 9ROM "s >ERE "_1% = +IT_(BA+;
.E?ECUTE %e-_" *+IT_EB+
0.
CREATE OR REPLACE PROCE(URE Det_em$-ee
*$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE IS
BEGIN
SELECT sa-a7H "_1%
INTO $_sa-H $_"
9ROM em$-ees
>ERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
@
.
)ARIABLE AR*5
-
7/23/2019 DEMO Codigos
30/146
E?ECUTE Det_em$-ee*00H :AR*5
E?ECUTE :_t1t-e := Det_" *+SA_REP+;
PRINT _t1t-e
5.
CREATE OR REPLACE 9UNCTION Det_ann2a-_&m$*
$_sa- IN em$-ees.sa-a7T6PEH
$_&mm IN em$-ees.&mm1ss1n_$&tT6PE
RETURN NUMBER IS
BEGIN
RETURN *N)L*$_sa-H0 4 *N)L*$_&mmH0 4 n
-
7/23/2019 DEMO Codigos
31/146
CREATE OR REPLACE 9UNCTION EN
RETURN 9ALSE;
EN(
-
7/23/2019 DEMO Codigos
32/146
RAISE_APPLICATION_ERROR *00H +Ina771s+H +A>ARRIS+H $_%e$t1%= 5
0.
E?ECUTE a%%_em$-ee*+e+H +>a771s+H +A>ARRIS+H $_%e$t1%= !0
.
CREATE OR REPLACE PROCE(URE em$_-1st
*$_max7s IN NUMBERIS
CURSOR &27_em$ IS
SELECT %.%e$a7tment_nameH e.em$-ee_1%H e.-ast_nameH
e.sa-a7H e.&mm1ss1n_$&t
9ROM %e$a7tments %H em$-ees e
>ERE %.%e$a7tment_1% = e.%e$a7tment_1%;
7e&_em$ &27_em$ROT6PE;
T6PE em$_ta_t$e IS TABLE O9 &27_em$ROT6PE IN(E? B6BINAR6_INTEGER;
em$_ta em$_ta_t$e;
1 NUMBER := ;
AR*0;
BEGIN
OPEN &27_em$; 9ETC> &27_em$ INTO 7e&_em$;
em$_ta*1 := 7e&_em$;
>ILE *&27_em$9OUN( AN( *1 F= $_max7s LOOP
1 := 1 ;
9ETC> &27_em$ INTO 7e&_em$;
em$_ta*1 := 7e&_em$;
-
7/23/2019 DEMO Codigos
33/146
+ 7s 1n + 33 AR RETURN )ARC>ARAS
-
7/23/2019 DEMO Codigos
34/146
S>O ERRORS
.
CREATE OR REPLACE PACKAGE BO(6 "_$D IS
PROCE(URE a%%_" *
$_"1% "s."_1%T6PEH
$_"t1t-e "s."_t1t-eT6PE IS
BEGIN
INSERT INTO "s *"_1%H "_t1t-e
)ALUES *$_"1%H $_"t1t-e;
COMMIT;
EN( a%%_";
PROCE(URE %e-_" *$_"1% "s."_1%T6PE IS
BEGIN
(ELETE 9ROM "s
>ERE "_1% = $_"1%;
I9 SLNOT9OUN( T>EN
RAISE_APPLICATION_ERROR*00H +N "s %e-ete%.+;
EN( I9;
EN( (EL_OB;
9UNCTION Det_" *$_"1% IN "s."_1%t$e
RETURN "s."_t1t-et$e IS
ERE "_1% = $_"1%;
RETURN
-
7/23/2019 DEMO Codigos
35/146
PROCE(URE 2$%_"*
$_"1% IN "s."_1%T6PEH
$_"t1t-e IN "s."_t1t-eT6PE IS
BEGIN
UP(ATE "s
SET "_t1t-e = $_"t1t-e
>ERE "_1% = $_"1%;
I9 SLNOT9OUN( T>EN
RAISE_APPLICATION_ERROR*00H +N " 2$%ate%.+;
EN( I9;
EN( 2$%_";
EN( "_$D;
@
S>O ERRORS
5.
E?ECUTE "_$D.a%%_"*+IT_S6SAN+H +Sstems Ana-st+
'.
SELECT 4
9ROM "s
>ERE "_1% = +IT_S6SAN+;
#.
CREATE OR REPLACE PACKAGE em$_$D IS
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
-
7/23/2019 DEMO Codigos
36/146
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE;
EN( em$_$D;
@
S>O ERRORS
CREATE OR REPLACE PACKAGE BO(6 em$_$D IS
9UNCTION EN
RETURN 9ALSE;
EN(
-
7/23/2019 DEMO Codigos
37/146
I9 EN
INSERT INTO em$-ees*em$-ee_1%H J7st_nameH -ast_nameH ema1-H
"_1%H manaDe7_1%H ,17e_%ateH sa-a7H &mm1ss1n_$&tH %e$a7tment_1%
)ALUES *em$-ees_se.NE?T)ALH $_J7st_nameH $_-ast_nameH $_ema1-H
$_"H $_mD7H TRUNC*S6S(ATEH $_sa-H $_&mmH $_%e$t1%;
ELSE
RAISE_APPLICATION_ERROR *00H +InERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
EN( em$_$D;
@
S>O ERRORS
!.
E?ECUTE em$_$D.a%%_em$-ee*+ane+H +>a771s+H+A>ARRIS+H $_%e$t1% =5
.
E?ECUTE em$_$D.a%%_em$-ee*+(a+H $_%e$t1% =!0
0.
SELECT 4
9ROM em$-ees
>ERE -ast_name = +Sm1t,+;
-
7/23/2019 DEMO Codigos
38/146
.
CREATE OR REPLACE PACKAGE em$_$D IS
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
@4 Ne O ERRORS
.
CREATE OR REPLACE PACKAGE em$_$D IS
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH
-
7/23/2019 DEMO Codigos
39/146
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
@4 Ne
-
7/23/2019 DEMO Codigos
40/146
E?CEPTION
>EN NO_(ATA_9OUN( T>EN
RETURN 9ALSE;
EN(
-
7/23/2019 DEMO Codigos
41/146
$_ema1- em$-ees.ema1-t$e;
BEGIN
$_ema1- := UPPER*SUBSTR*$_J7st_nameH H 33SUBSTR*$_-ast_nameH H#;
a%%_em$-ee*$_J7st_nameH $_-ast_nameH $_ema1-H $_%e$t1% =$_%e$t1%;
EN(;
@4 En% %e&-a7at1n 8 t,e ERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
EN( em$_$D;
@
S>O ERRORS
.
E?ECUTE em$_$D.a%%_em$-ee*+Sam2e-+H +$-1n+H 0
.
SELECT 4
9ROM em$-ees
>ERE -ast_name = +$-1n+;
5.
CREATE OR REPLACE PACKAGE em$_$D IS
PROCE(URE a%%_em$-ee*
-
7/23/2019 DEMO Codigos
42/146
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH$_-ast_name em$-ees.-ast_nameT6PEH
$_%e$t1% em$-ees.%e$a7tment_1%T6PE;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE;
@4 Ne
-
7/23/2019 DEMO Codigos
43/146
'.
CREATE OR REPLACE PACKAGE em$_$D IS
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_%e$t1% em$-ees.%e$a7tment_1%T6PE;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE;
@4 Ne
-
7/23/2019 DEMO Codigos
44/146
EN( em$_$D;
@
S>O ERRORS
CREATE OR REPLACE PACKAGE BO(6 em$_$D IS
9UNCTION EN
RETURN 9ALSE;
EN(
-
7/23/2019 DEMO Codigos
45/146
$_"H $_mD7H TRUNC*S6S(ATEH $_sa-H $_&mmH $_%e$t1%;
ELSE
RAISE_APPLICATION_ERROR *00H +InERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
@4 Ne Det_em$-ee 82n&t1n %e&-a7at1n sta7ts ,e7e 4@
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e IS
-
7/23/2019 DEMO Codigos
46/146
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE em$-ee_1% = $_em$_1%;
RETURN 7e&_em$;
EN(;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e; BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE -ast_name = $_8am1-_name;
RETURN 7e&_em$;
EN(;
@4 Ne O ERRORS
#.
Pa&aDe SPECI9ICATION
CREATE OR REPLACE PACKAGE em$_$D IS
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
-
7/23/2019 DEMO Codigos
47/146
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_%e$t1% em$-ees.%e$a7tment_1%T6PE;
PROCE(URE Det_em$-ee* $_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e;
@4 Ne $71nt_em$-ee $71nt_em$-ee $7&e%27e s$e& 4@
PROCE(URE $71nt_em$-ee*$_7e&_em$ em$-ees7t$e;
EN( em$_$D;
@
S>O ERRORS
!.
SET SER)EROUTPUT ON
BEGIN
em$_$D.$71nt_em$-ee*em$_$D.Det_em$-ee*00;
-
7/23/2019 DEMO Codigos
48/146
em$_$D.$71nt_em$-ee*em$_$D.Det_em$-ee*+$-1n+;
EN(;
@
.
Pa&aDe SPECI9ICATION
CREATE OR REPLACE PACKAGE em$_$D IS
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_%e$t1% em$-ees.%e$a7tment_1%T6PE;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e;
-
7/23/2019 DEMO Codigos
49/146
@4 Ne $7&e%27e 1n1t_%e$a7tments s$e& 4@
PROCE(URE 1n1t_%e$a7tments;
PROCE(URE $71nt_em$-ee*$_7e&_em$ em$-ees7t$e;
EN( em$_$D;
@
S>O ERRORS
Pa&aDe BO(6
CREATE OR REPLACE PACKAGE BO(6 em$_$D IS
@4 Ne t$e 4@
T6PE -ean_ta_t$e IS TABLE O9 BOOLEAN
IN(E? B6 BINAR6_INTEGER;
-
7/23/2019 DEMO Codigos
50/146
>EN NO_(ATA_9OUN( T>EN
RETURN 9ALSE;
EN(
-
7/23/2019 DEMO Codigos
51/146
a%%_em$-ee*$_J7st_nameH $_-ast_nameH $_ema1-H $_%e$t1% =$_%e$t1%;
EN(;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE IS
BEGIN
SELECT sa-a7H "_1%
INTO $_sa-H $_"
9ROM em$-ees
>ERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE em$-ee_1% = $_em$_1%;
RETURN 7e&_em$;
EN(;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE -ast_name = $_8am1-_name; RETURN 7e&_em$;
-
7/23/2019 DEMO Codigos
52/146
EN(;
PROCE(URE $71nt_em$-ee*$_7e&_em$ em$-ees7t$e IS
BEGIN
(BMS_OUTPUT.PUT_LINE*$_7e&_em$.%e$a7tment_1% 33+ +33
$_7e&_em$.em$-ee_1%33+ +33
$_7e&_em$.J7st_name33+ +33
$_7e&_em$.-ast_name33+ +33
$_7e&_em$."_1%33+ +33
$_7e&_em$.sa-a7;
EN(;
@4 Ne 1n1t_%e$a7tments $7&e%27e %e&-a7at1n. 4@
PROCE(URE 1n1t_%e$a7tments IS
BEGIN
9OR 7e& IN *SELECT %e$a7tment_1% 9ROM %e$a7tments
LOOP
O ERRORS
0.
Pa&aDe SPECI9ICATION
-
7/23/2019 DEMO Codigos
53/146
CREATE OR REPLACE PACKAGE em$_$D IS
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_%e$t1% em$-ees.%e$a7tment_1%T6PE;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e;
@4 Ne $7&e%27e 1n1t_%e$a7tments s$e& 4@
PROCE(URE 1n1t_%e$a7tments;
-
7/23/2019 DEMO Codigos
54/146
PROCE(URE $71nt_em$-ee*$_7e&_em$ em$-ees7t$e;
EN( em$_$D;
@
S>O ERRORS
Pa&aDe BO(6
CREATE OR REPLACE PACKAGE BO(6 em$_$D IS
T6PE -ean_ta_t$e IS TABLE O9 BOOLEAN IN(E? B6 BINAR6_INTEGER;
-
7/23/2019 DEMO Codigos
55/146
BEGIN
I9 EN
INSERT INTO em$-ees*em$-ee_1%H J7st_nameH -ast_nameH ema1-H
"_1%H manaDe7_1%H ,17e_%ateH sa-a7H &mm1ss1n_$&tH %e$a7tment_1%
)ALUES *em$-ees_se.NE?T)ALH $_J7st_nameH $_-ast_nameH $_ema1-H
$_"H $_mD7H TRUNC*S6S(ATEH $_sa-H $_&mmH $_%e$t1%;
ELSE
RAISE_APPLICATION_ERROR *00H +InERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
-
7/23/2019 DEMO Codigos
56/146
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE em$-ee_1% = $_em$_1%;
RETURN 7e&_em$;
EN(;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE -ast_name = $_8am1-_name;
RETURN 7e&_em$;
EN(;
PROCE(URE $71nt_em$-ee*$_7e&_em$ em$-ees7t$e IS
BEGIN
(BMS_OUTPUT.PUT_LINE*$_7e&_em$.%e$a7tment_1% 33+ +33
$_7e&_em$.em$-ee_1%33+ +33
$_7e&_em$.J7st_name33+ +33
$_7e&_em$.-ast_name33+ +33
$_7e&_em$."_1%33+ +33
$_7e&_em$.sa-a7;
EN(;
@4 Ne 1n1t_%e$a7tments $7&e%27e %e&-a7at1n. 4@
-
7/23/2019 DEMO Codigos
57/146
PROCE(URE 1n1t_%e$a7tments IS
BEGIN
9OR 7e& IN *SELECT %e$a7tment_1% 9ROM %e$a7tments
LOOP
O ERRORS
.
E?ECUTE em$_$D.a%%_em$-ee*+ames+H +Bn%+H 5
.
INSERT INTO %e$a7tments *%e$a7tment_1%H %e$a7tment_name
)ALUES *5H +Se&271t+;
COMMIT;
.
E?ECUTE em$_$D.a%%_em$-ee*+ames+H +Bn%+H 5
.
E?ECUTE EMP_PKG.INIT_(EPARTMENTS
5.
E?ECUTE em$_$D.a%%_em$-ee*+ames+H +Bn%+H 5
'.
(ELETE 9ROM em$-ees
>ERE J7st_name = +ames+ AN( -ast_name = +Bn%+;
-
7/23/2019 DEMO Codigos
58/146
(ELETE 9ROM %e$a7tments >ERE %e$a7tment_1% = 5;
COMMIT;
E?ECUTE EMP_PKG.INIT_(EPARTMENTS
#.
CREATE OR REPLACE PACKAGE em$_$D IS
@4 t,e $a&aDe s$e& 1s a-7ea% 1n an a-$,aet1&a- 7%e7. 4@
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_%e$t1% em$-ees.%e$a7tment_1%T6PE;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
-
7/23/2019 DEMO Codigos
59/146
7et27n em$-ees7t$e;
PROCE(URE 1n1t_%e$a7tments;
PROCE(URE $71nt_em$-ee*$_7e&_em$ em$-ees7t$e;
EN( em$_$D;
@
S>O ERRORS
!.
Pa&aDe BO(6
CREATE OR REPLACE PACKAGE BO(6 em$_$D IS
T6PE -ean_ta_t$e IS TABLE O9 BOOLEAN
IN(E? B6 BINAR6_INTEGER;
-
7/23/2019 DEMO Codigos
60/146
ELSE
RAISE_APPLICATION_ERROR *00H +InERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
-
7/23/2019 DEMO Codigos
61/146
9ROM em$-ees
>ERE em$-ee_1% = $_em$_1%;
RETURN 7e&_em$;
EN(;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees >ERE -ast_name = $_8am1-_name;
RETURN 7e&_em$;
EN(;
PROCE(URE 1n1t_%e$a7tments IS
BEGIN
9OR 7e& IN *SELECT %e$a7tment_1% 9ROM %e$a7tments
LOOP
-
7/23/2019 DEMO Codigos
62/146
9UNCTION
-
7/23/2019 DEMO Codigos
63/146
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0 IS
BEGIN
I9 EN @4
-
7/23/2019 DEMO Codigos
64/146
$_" OUT em$-ees."_1%T6PE IS
BEGIN
SELECT sa-a7H "_1%
INTO $_sa-H $_"
9ROM em$-ees
>ERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e; BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE em$-ee_1% = $_em$_1%;
RETURN 7e&_em$;
EN(;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE -ast_name = $_8am1-_name;
RETURN 7e&_em$;
EN(;
@4 Ne a-$,aet1&a- -&at1n 8 82n&t1n 1n1t_%e$a7tments. 4@
PROCE(URE 1n1t_%e$a7tments IS
BEGIN
-
7/23/2019 DEMO Codigos
65/146
9OR 7e& IN *SELECT %e$a7tment_1% 9ROM %e$a7tments
LOOP
-
7/23/2019 DEMO Codigos
66/146
@
S>O ERRORS
50.
Pa&aDe BO(6
CREATE OR REPLACE PACKAGE BO(6 em$_$D IS
9UNCTION EN
RETURN 9ALSE;
EN(
-
7/23/2019 DEMO Codigos
67/146
I9 EN
INSERT INTO em$-ees*em$-ee_1%H J7st_nameH -ast_nameH ema1-H
"_1%H manaDe7_1%H ,17e_%ateH sa-a7H &mm1ss1n_$&tH %e$a7tment_1%
)ALUES *em$-ees_se.NE?T)ALH $_J7st_nameH $_-ast_nameH $_ema1-H
$_"H $_mD7H TRUNC*S6S(ATEH $_sa-H $_&mmH $_%e$t1%;
ELSE
RAISE_APPLICATION_ERROR *00H +InERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
-
7/23/2019 DEMO Codigos
68/146
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE em$-ee_1% = $_em$_1%;
RETURN 7e&_em$;
EN(;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e 7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE -ast_name = $_8am1-_name;
RETURN 7e&_em$;
EN(;
@4 Ne $71nt_em$-ees $7&e%27e %e&-a7at1n. 4@
PROCE(URE $71nt_em$-ee*$_7e&_em$ em$-ees7t$e IS
BEGIN
(BMS_OUTPUT.PUT_LINE*$_7e&_em$.%e$a7tment_1% 33+ +33
$_7e&_em$.em$-ee_1%33+ +33
$_7e&_em$.J7st_name33+ +33
$_7e&_em$.-ast_name33+ +33
$_7e&_em$."_1%33+ +33
$_7e&_em$.sa-a7;
EN(;
-
7/23/2019 DEMO Codigos
69/146
EN( em$_$D;
@
S>O ERRORS
5.
T,e &27se ,as a %17e&t7 a-1as $7ARH $_J-ename IN )ARC>AR IS
8 UTL_9ILE.9ILE_T6PE;
CURSOR &27_aERE sa-a7 *SELECT A)G*sa-a7
9ROM em$-ees 1nne7
GROUP B6 2te7.%e$a7tment_1%
OR(ER B6 %e$a7tment_1%;
BEGIN
8 := UTL_9ILE.9OPEN*$_%17H $_J-enameH++;
UTL_9ILE.PUT_LINE*8H +Em$-ees , ea7n m7e t,an aAR*em$.sa-a7H +/H.00+H ;
EN( LOOP; UTL_9ILE.NE_LINE*8;
-
7/23/2019 DEMO Codigos
70/146
UTL_9ILE.PUT_LINE*8H +444 EN( O9 REPORT 444+;
UTL_9ILE.9CLOSE*8;
EN( em$-ee_7e$7t;
@
5.
87 st2%ent 7a'H as an exam$-e.
E?ECUTE em$-ee_7e$7t*+REPORTS_(IR+H+sa-_7$t'.txt+
5.
CREATE OR REPLACE PACKAGE ta-e_$D IS
PROCE(URE mae*$_ta-e_name )ARC>ARH $_&-_s$e&s )ARC>AR; PROCE(URE a%%_7*$_ta-e_name )ARC>ARH $_&-_ARH
$_&-s )ARC>AR := NULL;
PROCE(URE 2$%_7*$_ta-e_name )ARC>ARH $_set_ARH
$_&n%1t1ns )ARC>AR := NULL;
PROCE(URE %e-_7*$_ta-e_name )ARC>ARH $_&n%1t1ns )ARC>AR :=NULL;
PROCE(URE 7emAR;
EN( ta-e_$D;
@
S>O ERRORS
5.
CREATE OR REPLACE PACKAGE BO(6 ta-e_$D IS
PROCE(URE exe&2te*$_stmt )ARC>AR IS
BEGIN (BMS_OUTPUT.PUT_LINE*$_stmt;
E?ECUTE IMME(IATE $_stmt;
EN(;
PROCE(URE mae*$_ta-e_name )ARC>ARH $_&-_s$e&s )ARC>AR IS
AR*00 := +CREATE TABLE +33 $_ta-e_name 33
+ *+ 33 $_&-_s$e&s 33 ++; BEGIN
-
7/23/2019 DEMO Codigos
71/146
exe&2te*ARH $_&-_ARH
$_&-s )ARC>AR := NULL IS
AR*00 := +INSERT INTO +33 $_ta-e_name;
BEGIN
I9 $_&-s IS NOT NULL T>EN
-
7/23/2019 DEMO Codigos
72/146
EN(;
PROCE(URE 7emAR IS
&27_1% INTEGER;
AR*00 := +(ROP TABLE +33$_ta-e_name;
BEGIN
&27_1% := (BMS_SL.OPEN_CURSOR;
(BMS_OUTPUT.PUT_LINE*
-
7/23/2019 DEMO Codigos
73/146
9ROM m_&nta&ts;
5.
SET SER)EROUTPUT ON
E?ECUTE ta-e_$D.%e-_7*+m_&nta&ts+H +1%=+
'0.
SET SER)EROUTPUT ON
E?EC ta-e_$D.2$%_7*+m_&nta&ts+H+name=++Nan& G7eene7D+++H+1%=+
'.
SELECT 4
9ROM m_&nta&ts;
'.E?ECUTE ta-e_$D.7emAR IS
BEGIN
(BMS_OUTPUT.PUT_LINE*$_stmt;
E?ECUTE IMME(IATE $_stmt;
EN(;
9UNCTION Det_t$e*$_name )ARC>AR RETURN )ARC>AR IS
AR*0 := NULL;
BEGIN
@4
-
7/23/2019 DEMO Codigos
74/146
4 T,e RONUM = 1s a%%e% t t,e &n%1t1n
4 t ens27e n- ne 7 1s 7et27ne% 18 t,e
4 name 7e$7esents a PACKAGEH ,1&, ma a-s
4 ,aERE "e&t_name = UPPER*$_name AN( RONUM = ;
RETURN EN NO_(ATA_9OUN( T>EN
RETURN NULL;
EN(;
PROCE(URE mae*$_name )ARC>AR IS
AR*00;
AR*0 := Det_t$e*$_name;
BEGIN
I9 EN
-
7/23/2019 DEMO Codigos
75/146
S>O ERRORS
'5.
SET SER)EROUTPUT ON
E?ECUTE &m$1-e_$D.mae*+em$-ee_7e$7t+
E?ECUTE &m$1-e_$D.mae*+em$_$D+
E?ECUTE &m$1-e_$D.mae*+em$_%ata+
''.
CREATE OR REPLACE PACKAGE em$_$D IS
T6PE em$_ta_t$e IS TABLE O9 em$-eesROT6PE;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_%e$t1% em$-ees.%e$a7tment_1%T6PE;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE;
-
7/23/2019 DEMO Codigos
76/146
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e;
PROCE(URE Det_em$-ees*$_%e$t_1% em$-ees.%e$a7tment_1%t$e;
PROCE(URE 1n1t_%e$a7tments;
PROCE(URE $71nt_em$-ee*$_7e&_em$ em$-ees7t$e;
EN( em$_$D;
@
S>O ERRORS
'#.
CREATE OR REPLACE PACKAGE BO(6 em$_$D IS
T6PE -ean_ta_t$e IS TABLE O9 BOOLEAN
IN(E? B6 BINAR6_INTEGER;
-
7/23/2019 DEMO Codigos
77/146
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0 IS
BEGIN
I9 EN
INSERT INTO em$-ees*em$-ee_1%H J7st_nameH -ast_nameH ema1-H
"_1%H manaDe7_1%H ,17e_%ateH sa-a7H &mm1ss1n_$&tH %e$a7tment_1%
)ALUES *em$-ees_se.NE?T)ALH $_J7st_nameH $_-ast_nameH $_ema1-H
$_"H $_mD7H TRUNC*S6S(ATEH $_sa-H $_&mmH $_%e$t1%;
ELSE
RAISE_APPLICATION_ERROR *00H +In
-
7/23/2019 DEMO Codigos
78/146
>ERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE em$-ee_1% = $_em$_1%;
RETURN 7e&_em$; EN(;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE -ast_name = $_8am1-_name;
RETURN 7e&_em$;
EN(;
@4 Ne Det_em$-ees $7&e%27e. 4@
PROCE(URE Det_em$-ees*$_%e$t_1% em$-ees.%e$a7tment_1%t$e IS
BEGIN
SELECT 4 BULK COLLECT INTO em$_ta-e
9ROM EMPLO6EES
>ERE %e$a7tment_1% = $_%e$t_1%;
EN(;
-
7/23/2019 DEMO Codigos
79/146
PROCE(URE 1n1t_%e$a7tments IS
BEGIN
9OR 7e& IN *SELECT %e$a7tment_1% 9ROM %e$a7tments
LOOP
-
7/23/2019 DEMO Codigos
80/146
@
S>O ERRORS
'!.
Pa&aDe SPECI9ICATION
CREATE OR REPLACE PACKAGE em$_$D IS
T6PE em$_ta_t$e IS TABLE O9 em$-eesROT6PE;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_%e$t1% em$-ees.%e$a7tment_1%T6PE;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
-
7/23/2019 DEMO Codigos
81/146
7et27n em$-ees7t$e;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e;
PROCE(URE Det_em$-ees*$_%e$t_1% em$-ees.%e$a7tment_1%t$e;
PROCE(URE 1n1t_%e$a7tments;
PROCE(URE $71nt_em$-ee*$_7e&_em$ em$-ees7t$e;
PROCE(URE s,_em$-ees;
EN( em$_$D;
@
S>O ERRORS
Pa&aDe BO(6
CREATE OR REPLACE PACKAGE BO(6 em$_$D IS
T6PE -ean_ta_t$e IS TABLE O9 BOOLEAN
IN(E? B6 BINAR6_INTEGER;
-
7/23/2019 DEMO Codigos
82/146
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0 IS
BEGIN
I9 EN
INSERT INTO em$-ees*em$-ee_1%H J7st_nameH -ast_nameH ema1-H
"_1%H manaDe7_1%H ,17e_%ateH sa-a7H &mm1ss1n_$&tH %e$a7tment_1%
)ALUES *em$-ees_se.NE?T)ALH $_J7st_nameH $_-ast_nameH $_ema1-H$_"H $_mD7H TRUNC*S6S(ATEH $_sa-H $_&mmH $_%e$t1%;
ELSE
RAISE_APPLICATION_ERROR *00H +In
-
7/23/2019 DEMO Codigos
83/146
BEGIN
SELECT sa-a7H "_1%
INTO $_sa-H $_"
9ROM em$-ees
>ERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE em$-ee_1% = $_em$_1%;
RETURN 7e&_em$;
EN(;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE -ast_name = $_8am1-_name;
RETURN 7e&_em$;
EN(;
@4 Ne Det_em$-ees $7&e%27e. 4@
PROCE(URE Det_em$-ees*$_%e$t_1% em$-ees.%e$a7tment_1%t$e IS
BEGIN
SELECT 4 BULK COLLECT INTO em$_ta-e
-
7/23/2019 DEMO Codigos
84/146
9ROM EMPLO6EES
>ERE %e$a7tment_1% = $_%e$t_1%;
EN(;
PROCE(URE 1n1t_%e$a7tments IS
BEGIN
9OR 7e& IN *SELECT %e$a7tment_1% 9ROM %e$a7tments
LOOP
-
7/23/2019 DEMO Codigos
85/146
9UNCTION
-
7/23/2019 DEMO Codigos
86/146
;
CREATE SEUENCE -D_neem$_se;
#.
Pa&aDe SPECI9ICATION
CREATE OR REPLACE PACKAGE em$_$D IS
T6PE em$_ta_t$e IS TABLE O9 em$-eesROT6PE;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_%e$t1% em$-ees.%e$a7tment_1%T6PE;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
-
7/23/2019 DEMO Codigos
87/146
7et27n em$-ees7t$e;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e;
PROCE(URE Det_em$-ees*$_%e$t_1% em$-ees.%e$a7tment_1%t$e;
PROCE(URE 1n1t_%e$a7tments;
PROCE(URE $71nt_em$-ee*$_7e&_em$ em$-ees7t$e;
PROCE(URE s,_em$-ees;
EN( em$_$D;
@
S>O ERRORS
Pa&aDe BO(6
CREATE OR REPLACE PACKAGE BO(6 em$_$D IS
T6PE -ean_ta_t$e IS TABLE O9 BOOLEAN
IN(E? B6 BINAR6_INTEGER;
-
7/23/2019 DEMO Codigos
88/146
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0 IS
Ne -&a- $7&e%27e
PROCE(URE a2%1t_neem$ IS
PRAGMA AUTONOMOUS_TRANSACTION; 2se7_1% )ARC>AR*0 := USER;
BEGIN
INSERT INTO -D_neem$ *ent7_1%H 2se7_1%H -D_t1meH name
)ALUES *-D_neem$_se.NE?T)ALH 2se7_1%H ss%ateH$_J7st_name33+ +33$_-ast_name;
COMMIT;
EN( a2%1t_neem$;
BEGIN a%%_em$-ee
I9 EN
INSERT INTO em$-ees*em$-ee_1%H J7st_nameH -ast_nameH ema1-H
"_1%H manaDe7_1%H ,17e_%ateH sa-a7H &mm1ss1n_$&tH %e$a7tment_1%
)ALUES *em$-ees_se.NE?T)ALH $_J7st_nameH $_-ast_nameH $_ema1-H
$_"H $_mD7H TRUNC*S6S(ATEH $_sa-H $_&mmH $_%e$t1%;ELSE
RAISE_APPLICATION_ERROR *00H +In
-
7/23/2019 DEMO Codigos
89/146
$_%e$t1% em$-ees.%e$a7tment_1%T6PE IS
$_ema1- em$-ees.ema1-t$e;
BEGIN
$_ema1- := UPPER*SUBSTR*$_J7st_nameH H 33SUBSTR*$_-ast_nameH H#;
a%%_em$-ee*$_J7st_nameH $_-ast_nameH $_ema1-H $_%e$t1% =$_%e$t1%;
EN(;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE IS
BEGIN
SELECT sa-a7H "_1%
INTO $_sa-H $_"
9ROM em$-ees
>ERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE em$-ee_1% = $_em$_1%;
RETURN 7e&_em$;
EN(;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
-
7/23/2019 DEMO Codigos
90/146
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE -ast_name = $_8am1-_name;
RETURN 7e&_em$;
EN(;
@4 Ne Det_em$-ees $7&e%27e. 4@
PROCE(URE Det_em$-ees*$_%e$t_1% em$-ees.%e$a7tment_1%t$e IS
BEGIN SELECT 4 BULK COLLECT INTO em$_ta-e
9ROM EMPLO6EES
>ERE %e$a7tment_1% = $_%e$t_1%;
EN(;
PROCE(URE 1n1t_%e$a7tments IS
BEGIN
9OR 7e& IN *SELECT %e$a7tment_1% 9ROM %e$a7tments
LOOP
-
7/23/2019 DEMO Codigos
91/146
EN(;
PROCE(URE s,_em$-ees IS
BEGIN
I9 em$_ta-e IS NOT NULL T>EN
(BMS_OUTPUT.PUT_LINE*+Em$-ees 1n Pa&aDe ta-e+;
9OR 1 IN .. em$_ta-e.COUNT
LOOP
$71nt_em$-ee*em$_ta-e*1;
EN( LOOP;
EN( I9; EN( s,_em$-ees;
9UNCTION
-
7/23/2019 DEMO Codigos
92/146
CREATE OR REPLACE PACKAGE em$_$D IS
T6PE em$_ta_t$e IS TABLE O9 em$-eesROT6PE;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_%e$t1% em$-ees.%e$a7tment_1%T6PE;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e;
PROCE(URE Det_em$-ees*$_%e$t_1% em$-ees.%e$a7tment_1%t$e;
-
7/23/2019 DEMO Codigos
93/146
PROCE(URE 1n1t_%e$a7tments;
PROCE(URE $71nt_em$-ee*$_7e&_em$ em$-ees7t$e;
PROCE(URE s,_em$-ees;
EN( em$_$D;
@
S>O ERRORS
Pa&aDe BO(6
CREATE OR REPLACE PACKAGE BO(6 em$_$D IS
T6PE -ean_ta_t$e IS TABLE O9 BOOLEAN
IN(E? B6 BINAR6_INTEGER;
-
7/23/2019 DEMO Codigos
94/146
Ne -&a- $7&e%27e
PROCE(URE a2%1t_neem$ IS
PRAGMA AUTONOMOUS_TRANSACTION;
2se7_1% )ARC>AR*0 := USER;
BEGIN
INSERT INTO -D_neem$ *ent7_1%H 2se7_1%H -D_t1meH name
)ALUES *-D_neem$_se.NE?T)ALH 2se7_1%H ss%ateH$_J7st_name33+ +33$_-ast_name;
COMMIT;
EN( a2%1t_neem$;
BEGIN a%%_em$-ee
I9 EN
a2%1t_neem$;
INSERT INTO em$-ees*em$-ee_1%H J7st_nameH -ast_nameH ema1-H
"_1%H manaDe7_1%H ,17e_%ateH sa-a7H &mm1ss1n_$&tH %e$a7tment_1%
)ALUES *em$-ees_se.NE?T)ALH $_J7st_nameH $_-ast_nameH $_ema1-H
$_"H $_mD7H TRUNC*S6S(ATEH $_sa-H $_&mmH $_%e$t1%;
ELSE
RAISE_APPLICATION_ERROR *00H +In
-
7/23/2019 DEMO Codigos
95/146
a%%_em$-ee*$_J7st_nameH $_-ast_nameH $_ema1-H $_%e$t1% =$_%e$t1%;
EN(;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE IS
BEGIN
SELECT sa-a7H "_1%
INTO $_sa-H $_"
9ROM em$-ees
>ERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE em$-ee_1% = $_em$_1%;
RETURN 7e&_em$;
EN(;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE -ast_name = $_8am1-_name; RETURN 7e&_em$;
-
7/23/2019 DEMO Codigos
96/146
EN(;
@4 Ne Det_em$-ees $7&e%27e. 4@
PROCE(URE Det_em$-ees*$_%e$t_1% em$-ees.%e$a7tment_1%t$e IS
BEGIN
SELECT 4 BULK COLLECT INTO em$_ta-e
9ROM EMPLO6EES
>ERE %e$a7tment_1% = $_%e$t_1%;
EN(;
PROCE(URE 1n1t_%e$a7tments IS
BEGIN
9OR 7e& IN *SELECT %e$a7tment_1% 9ROM %e$a7tments
LOOP
-
7/23/2019 DEMO Codigos
97/146
(BMS_OUTPUT.PUT_LINE*+Em$-ees 1n Pa&aDe ta-e+;
9OR 1 IN .. em$_ta-e.COUNT
LOOP
$71nt_em$-ee*em$_ta-e*1;
EN( LOOP;
EN( I9;
EN( s,_em$-ees;
9UNCTION
-
7/23/2019 DEMO Codigos
98/146
se-e&t 4 87m -D_neem$;
#5.
ATE OR REPLACE PROCE(URE &,e&_sa-a7 *$_t,e_" )ARC>ARH$_t,e_sa-a7 NUMBER IS
RO
BEGIN &,e&_sa-a7*:ne."_1%H :ne.sa-a7;
EN(;
@
S>O ERRORS
##.
E?ECUTE em$_$D.a%%_em$-ee*+E-ean7+H +Be,+H 0
#!.UP(ATE em$-ees
-
7/23/2019 DEMO Codigos
99/146
SET sa-a7 = 000
>ERE em$-ee_1% = 5;
UP(ATE em$-ees
SET "_1% = +>R_REP+
>ERE em$-ee_1% = 5;
#.
UP(ATE em$-ees
SET sa-a7 = !00
>ERE em$-ee_1% = 5;
!0CREATE OR REPLACE TRIGGER &,e&_sa-a7_t7D
BE9ORE INSERT OR UP(ATE O9 "_1%H sa-a7
ON em$-ees 9OR EAC> RO
>EN *ne."_1% F N)L*-%."_1%H+Y+ OR
ne.sa-a7 F N)L*-%.sa-a7H0
BEGIN
&,e&_sa-a7*:ne."_1%H :ne.sa-a7;
EN(;
@
S>O ERRORS
!
BEGIN
em$_$D.a%%_em$-ee*+E-ean7+H +Be,+H +EBE>+H
$_" = +IT_PROG+H $_sa- = 5000;
EN(;
@
!
UP(ATE em$-ees
SET sa-a7 = sa-a7 000
>ERE "_1% = +IT_PROG+;
!
-
7/23/2019 DEMO Codigos
100/146
UP(ATE em$-ees
SET sa-a7 = 000
>ERE em$-ee_1% = *SELECT em$-ee_1%
9ROM em$-ees
>ERE -ast_name = +Be,+;
!
UP(ATE em$-ees
set "_1% = +ST_MAN+
>ERE em$-ee_1% = *SELECT em$-ee_1%
9ROM em$-ees
>ERE -ast_name = +Be,+;!5
CREATE OR REPLACE TRIGGER %e-ete_em$_t7D
BE9ORE (ELETE ON em$-ees
(ECLARE
t,e_%a )ARC>AR* := TO_C>AR*S6S(ATEH +(6+;
t,e_,27 PLS_INTEGER := TO_NUMBER*TO_C>AR*S6S(ATEH +>>+;
BEGIN
I9 *t,e_,27 BETEEN AN( ! AN( *t,e_%a NOT IN *+SAT+H+SUN+ T>EN
RAISE_APPLICATION_ERROR*050H
+Em$-ee 7e&7%s &annt e %e-ete% %271nD t,e 2s1ness ,27s 8 AMan% 'PM+;
EN( I9;
EN(;
@S>O ERRORS
!'
(ELETE 9ROM em$-ees
>ERE "_1% = +SA_REP+
AN( %e$a7tment_1% IS NULL;
!#
Pa&aDe SPECI9ICATION
-
7/23/2019 DEMO Codigos
101/146
CREATE OR REPLACE PACKAGE em$_$D IS
T6PE em$_ta_t$e IS TABLE O9 em$-eesROT6PE;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_ema1- em$-ees.ema1-T6PEH
$_" em$-ees."_1%T6PE (E9AULT +SA_REP+H
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0;
PROCE(URE a%%_em$-ee*
$_J7st_name em$-ees.J7st_nameT6PEH
$_-ast_name em$-ees.-ast_nameT6PEH
$_%e$t1% em$-ees.%e$a7tment_1%T6PE;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e;
PROCE(URE Det_em$-ees*$_%e$t_1% em$-ees.%e$a7tment_1%t$e;
-
7/23/2019 DEMO Codigos
102/146
PROCE(URE 1n1t_%e$a7tments;
PROCE(URE $71nt_em$-ee*$_7e&_em$ em$-ees7t$e;
PROCE(URE s,_em$-ees;
@4 Ne set_sa-a7 $7&e%27e 4@
PROCE(URE set_sa-a7*$_"1% )ARC>ARH $_m1n_sa-a7 NUMBER;
EN( em$_$D;
@
S>O ERRORS
Pa&aDe BO(6
CREATE OR REPLACE PACKAGE BO(6 em$_$D IS
T6PE -ean_ta_t$e IS TABLE O9 BOOLEAN
IN(E? B6 BINAR6_INTEGER;
-
7/23/2019 DEMO Codigos
103/146
$_mD7 em$-ees.manaDe7_1%T6PE (E9AULT 5H
$_sa- em$-ees.sa-a7T6PE (E9AULT 000H
$_&mm em$-ees.&mm1ss1n_$&tT6PE (E9AULT 0H
$_%e$t1% em$-ees.%e$a7tment_1%T6PE (E9AULT 0 IS
Ne -&a- $7&e%27e
PROCE(URE a2%1t_neem$ IS
PRAGMA AUTONOMOUS_TRANSACTION;
2se7_1% )ARC>AR*0 := USER;
BEGIN INSERT INTO -D_neem$ *ent7_1%H 2se7_1%H -D_t1meH name
)ALUES *-D_neem$_se.NE?T)ALH 2se7_1%H ss%ateH$_J7st_name33+ +33$_-ast_name;
COMMIT;
EN( a2%1t_neem$;
BEGIN a%%_em$-ee
I9 EN
a2%1t_neem$;
INSERT INTO em$-ees*em$-ee_1%H J7st_nameH -ast_nameH ema1-H
"_1%H manaDe7_1%H ,17e_%ateH sa-a7H &mm1ss1n_$&tH %e$a7tment_1%
)ALUES *em$-ees_se.NE?T)ALH $_J7st_nameH $_-ast_nameH $_ema1-H
$_"H $_mD7H TRUNC*S6S(ATEH $_sa-H $_&mmH $_%e$t1%;
ELSERAISE_APPLICATION_ERROR *00H +In
-
7/23/2019 DEMO Codigos
104/146
$_ema1- em$-ees.ema1-t$e;
BEGIN
$_ema1- := UPPER*SUBSTR*$_J7st_nameH H 33SUBSTR*$_-ast_nameH H#;
a%%_em$-ee*$_J7st_nameH $_-ast_nameH $_ema1-H $_%e$t1% =$_%e$t1%;
EN(;
PROCE(URE Det_em$-ee*
$_em$1% IN em$-ees.em$-ee_1%T6PEH
$_sa- OUT em$-ees.sa-a7T6PEH
$_" OUT em$-ees."_1%T6PE IS
BEGIN
SELECT sa-a7H "_1%
INTO $_sa-H $_"
9ROM em$-ees
>ERE em$-ee_1% = $_em$1%;
EN( Det_em$-ee;
9UNCTION Det_em$-ee*$_em$_1% em$-ees.em$-ee_1%t$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE em$-ee_1% = $_em$_1%;
RETURN 7e&_em$;
EN(;
9UNCTION Det_em$-ee*$_8am1-_name em$-ees.-ast_namet$e
7et27n em$-ees7t$e IS
7e&_em$ em$-ees7t$e;
BEGIN
-
7/23/2019 DEMO Codigos
105/146
SELECT 4 INTO 7e&_em$
9ROM em$-ees
>ERE -ast_name = $_8am1-_name;
RETURN 7e&_em$;
EN(;
@4 Ne Det_em$-ees $7&e%27e. 4@
PROCE(URE Det_em$-ees*$_%e$t_1% em$-ees.%e$a7tment_1%t$e IS
BEGIN
SELECT 4 BULK COLLECT INTO em$_ta-e 9ROM EMPLO6EES
>ERE %e$a7tment_1% = $_%e$t_1%;
EN(;
PROCE(URE 1n1t_%e$a7tments IS
BEGIN
9OR 7e& IN *SELECT %e$a7tment_1% 9ROM %e$a7tments
LOOP
-
7/23/2019 DEMO Codigos
106/146
PROCE(URE s,_em$-ees IS
BEGIN
I9 em$_ta-e IS NOT NULL T>EN
(BMS_OUTPUT.PUT_LINE*+Em$-ees 1n Pa&aDe ta-e+;
9OR 1 IN .. em$_ta-e.COUNT
LOOP
$71nt_em$-ee*em$_ta-e*1;
EN( LOOP;
EN( I9;
EN( s,_em$-ees;
9UNCTION
-
7/23/2019 DEMO Codigos
107/146
UP(ATE em$-ees
SET sa-a7 = $_m1n_sa-a7
>ERE em$-ee_1% = 7e&_em$.em$-ee_1%;
EN( LOOP;
EN( set_sa-a7;
BEGIN
1n1t_%e$a7tments;
EN( em$_$D;
@
S>O ERRORS!!
CREATE OR REPLACE TRIGGER 2$%_m1nsa-a7_t7D
A9TER UP(ATE O9 m1n_sa-a7 ON OBS
9OR EAC> RO
BEGIN
em$_$D.set_sa-a7*:ne."_1%H :ne.m1n_sa-a7;
EN(;
@
S>O ERRORS
!
SELECT em$-ee_1%H -ast_nameH sa-a7
9ROM em$-ees
>ERE "_1% = +IT_PROG+;
UP(ATE "s
SET m1n_sa-a7 = m1n_sa-a7 000
>ERE "_1% = +IT_PROG+;
0
CREATE OR REPLACE PACKAGE "s_$D IS
PROCE(URE 1n1t1a-1e;
9UNCTION Det_m1nsa-a7*$_"1% )ARC>AR RETURN NUMBER;
-
7/23/2019 DEMO Codigos
108/146
9UNCTION Det_maxsa-a7*$_"1% )ARC>AR RETURN NUMBER;
PROCE(URE set_m1nsa-a7*$_"1% )ARC>ARH $_m1n_sa-a7 NUMBER;
PROCE(URE set_maxsa-a7*$_"1% )ARC>ARH $_max_sa-a7 NUMBER;
EN( "s_$D;
@
S>O ERRORS
CREATE OR REPLACE PACKAGE BO(6 "s_$D IS
T6PE "s_ta_t$e IS TABLE O9 "s7t$e
IN(E? B6 "s."_1%t$e;
"sta "s_ta_t$e;
PROCE(URE 1n1t1a-1e IS
BEGIN
9OR 7e&_" IN *SELECT 4 9ROM "s
LOOP
"sta*7e&_"."_1% := 7e&_";
EN( LOOP;
EN( 1n1t1a-1e;
9UNCTION Det_m1nsa-a7*$_"1% )ARC>AR RETURN NUMBER IS
BEGIN
RETURN "sta*$_"1%.m1n_sa-a7;
EN( Det_m1nsa-a7;
9UNCTION Det_maxsa-a7*$_"1% )ARC>AR RETURN NUMBER IS
BEGIN
RETURN "sta*$_"1%.max_sa-a7;
EN( Det_maxsa-a7;
PROCE(URE set_m1nsa-a7*$_"1% )ARC>ARH $_m1n_sa-a7 NUMBER IS
BEGIN
"sta*$_"1%.max_sa-a7 := $_m1n_sa-a7;
-
7/23/2019 DEMO Codigos
109/146
EN( set_m1nsa-a7;
PROCE(URE set_maxsa-a7*$_"1% )ARC>ARH $_max_sa-a7 NUMBER IS
BEGIN
"sta*$_"1%.max_sa-a7 := $_max_sa-a7;
EN( set_maxsa-a7;
EN( "s_$D;
@
S>O ERRORS
CREATE OR REPLACE PROCE(URE &,e&_sa-a7 *$_t,e_" )ARC>ARH$_t,e_sa-a7 NUMBER IS
-
7/23/2019 DEMO Codigos
110/146
CREATE OR REPLACE TRIGGER 1n1t_"$D_t7D
BE9ORE INSERT OR UP(ATE ON "s
CALL "s_$D.1n1t1a-1e
@
S>O ERRORS
SELECT em$-ee_1%H -ast_nameH sa-a7
9ROM em$-ees
>ERE "_1% = +IT_PROG+;
UP(ATE "s
SET m1n_sa-a7 = m1n_sa-a7 000
>ERE "_1% = +IT_PROG+;
SELECT em$-ee_1%H -ast_nameH sa-a7
9ROM em$-ees
>ERE "_1% = +IT_PROG+;
5
E?ECUTE em$_$D.a%%_em$-ee*+Ste
-
7/23/2019 DEMO Codigos
111/146
>ERE -ast_name = +M7se+;
!
SELECT nameH t$eH$-s-_&%e_t$e as &%e_t$eH
$-s-_$t1m1e_-e
-
7/23/2019 DEMO Codigos
112/146
SET SER)EROUTPUT ON
E?ECUTE(BMS_OUTPUT.PUT_LINE*(BMS_ARNING.GET_CATEGOR6*ZmessaDe;
0'
ALTER SESSION SET PLSL_CC9LAGS = +m_%e2D:9ALSEHm_t7a&1nD:9ALSE+;
CREATE OR REPLACE PACKAGE m_$D AS
SUBT6PE m_7ea- IS
/I9 (BMS_(B_)ERSION.)ERSION F 0 /T>EN NUMBER; &,e& %ataase
EN
m_$1 := .0'0!!00!00#'''!'#;
m_e := .#!!!!5055'0!##5''##5;
/ELSE
m_$1 := .0'0!!00!00#'''!'#%;
m_e := .#!!!!5055'0!##5''##5%;
/EN(
EN( m_$D;
@
CREATE OR REPLACE PROCE(URE &17&-e_a7ea*7a%12s m_$D.m_7ea- IS
m_a7ea m_$D.m_7ea-;
m_%atat$e )ARC>AR*0;
BEGIN
-
7/23/2019 DEMO Codigos
113/146
m_a7ea := m_$D.m_$1 4 7a%12s 4 7a%12s;
(BMS_OUTPUT.PUT_LINE*+Ra%12s: + 33 TO_C>AR*7a%12s
33 + A7ea: + 33 TO_C>AR*m_a7ea ;
/I9 //m_%e2D /T>EN
18 m_%e2D 1s TRUEH 72n sme %e2DD1nD &%e
SELECT (ATA_T6PE INTO m_%atat$e 9ROM USER_ARGUMENTS
>ERE OBECT_NAME = +CIRCLE_AREA+ AN( ARGUMENT_NAME =+RA(IUS+;
(BMS_OUTPUT.PUT_LINE*+(atat$e 8 t,e RA(IUS a7D2ment 1s: + 33m_%atat$e;
/EN(
EN(;
@
0#
T,e 8--1nD exam$-e ass2mes 2 a7e t,e st2%ent 1t, t,e a&&2nt
7a'.SET SER)EROUTPUT ON
CALL (BMS_PREPROCESSOR.PRINT_POST_PROCESSE(_SOURCE*+PACKAGE+H+ORA'+H +M6_PKG+;
0!
SET SER)EROUTPUT ON
BEGIN
/I9 (BMS_(B_)ERSION.)ER_LE_0_ /T>EN
/ERROR +2ns2$$7te% %ataase 7e-ease.+ /EN(
/ELSE
(BMS_OUTPUT.PUT_LINE *+Re-ease + 33 (BMS_(B_)ERSION.)ERSION 33 +.+ 33
(BMS_(B_)ERSION.RELEASE 33 + 1s s2$$7te%.+; Nte t,at t,1s COMMIT sntax 1s ne- s2$$7te% 1n 0.
-
7/23/2019 DEMO Codigos
114/146
COMMIT RITE IMME(IATE NOAIT;
/EN(
EN(;
@
0
(ECLARE
t,e $a&aDe_text AR*#'#;
9UNCTION Dene7ate_s$e& *$Dname )ARC>AR RETURN )ARC>AR AS
BEGIN
RETURN +CREATE PACKAGE + 33 $Dname 33 + AS
PROCE(URE 7a1se_sa-a7 *em$_1% NUMBERH am2nt NUMBER;
PROCE(URE J7e_em$-ee *em$_1% NUMBER;
EN( + 33 $Dname 33 +;+;
EN( Dene7ate_s$e&;
9UNCTION Dene7ate_% *$Dname )ARC>AR RETURN )ARC>AR AS
BEGIN
RETURN +CREATE PACKAGE BO(6 + 33 $Dname 33 + AS
PROCE(URE 7a1se_sa-a7 *em$_1% NUMBERH am2nt NUMBER IS
BEGIN
UP(ATE em$-ees SET sa-a7 = sa-a7 am2nt >ERE em$-ee_1% =em$_1%;
EN( 7a1se_sa-a7;
PROCE(URE J7e_em$-ee *em$_1% NUMBER IS
BEGIN
(ELETE 9ROM em$-ees >ERE em$-ee_1% = em$_1%;
EN( J7e_em$-ee;
EN( + 33 $Dname 33 +;+;
EN( Dene7ate_%;
BEGIN
-
7/23/2019 DEMO Codigos
115/146
Dene7ate $a&aDe s$e&
$a&aDe_text := Dene7ate_s$e&*+em$_a&t1ns+;
&7eate an% 7a$ t,e $a&aDe s$e&
S6S.(BMS_((L.CREATE_RAPPE(*$a&aDe_text;
Dene7ate $a&aDe %
$a&aDe_text := Dene7ate_%*+em$_a&t1ns+;
&7eate an% 7a$ t,e $a&aDe %
S6S.(BMS_((L.CREATE_RAPPE(*$a&aDe_text;EN(;
@
&a-- a $7&e%27e 87m t,e 7a$$e% $a&aDe
CALL em$_a&t1ns.7a1se_sa-a7*0H 00;
Use t,e USER_SOURCE %ata %1&t1na7
-
7/23/2019 DEMO Codigos
116/146
5
CREATE TABLE em$s AS
SELECT 4 9ROM em$-ee;
'
SELECT "e&t_nameH "e&t_t$eH stat2s
9ROM USER_OBECTS
>ERE stat2s = +IN)ALI(+;
#
CREATE OR REPLACE PACKAGE &m$1-e_$D IS
PROCE(URE mae*name )ARC>AR;
PROCE(URE 7e&m$1-e;EN( &m$1-e_$D;
@
S>O ERRORS
CREATE OR REPLACE PACKAGE BO(6 &m$1-e_$D IS
PROCE(URE exe&2te*stmt )ARC>AR IS
BEGIN
(BMS_OUTPUT.PUT_LINE*stmt;
E?ECUTE IMME(IATE stmt;
EN(;
9UNCTION Det_t$e*name )ARC>AR RETURN )ARC>AR IS
$7&_t$e )ARC>AR*0 := NULL;
BEGIN
@4
4 T,e RONUM = 1s a%%e% t t,e &n%1t1n
4 t ens27e n- ne 7 1s 7et27ne% 18 t,e
4 name 7e$7esents a PACKAGEH ,1&, ma a-s
4 ,a
-
7/23/2019 DEMO Codigos
117/146
4 t,e s$e&1J&at1n 7 % as se$a7ate
4 &m$nents.
4@
SELECT "e&t_t$e INTO $7&_t$e
9ROM 2se7_"e&ts
>ERE "e&t_name = UPPER*name
AN( RONUM = ;
RETURN $7&_t$e;
E?CEPTION
>EN NO_(ATA_9OUN( T>EN
RETURN NULL; EN(;
PROCE(URE mae*name )ARC>AR IS
stmt )ARC>AR*00;
$7&_t$e )ARC>AR*0 := Det_t$e*name;
BEGIN
I9 $7&_t$e IS NOT NULL T>EN
stmt := +ALTER +33 $7&_t$e 33+ +33 name 33+ COMPILE+;
exe&2te*stmt;
ELSE
RAISE_APPLICATION_ERROR*000H
+S2$7D7am +++33 name 33+++ %es nt ex1st+;
EN( I9;
EN( mae;
PROCE(URE 7e&m$1-e IS
stmt )ARC>AR*00;
"_name 2se7_"e&ts."e&t_namet$e;
"_t$e 2se7_"e&ts."e&t_t$et$e;
BEGIN
9OR "7e& IN *SELECT "e&t_nameH "e&t_t$e
-
7/23/2019 DEMO Codigos
118/146
9ROM 2se7_"e&ts
>ERE stat2s = +IN)ALI(+
AN( "e&t_t$e F +PACKAGE BO(6+
LOOP
stmt := +ALTER +33 "7e&."e&t_t$e 33+ +33
"7e&."e&t_name 33+ COMPILE+;
exe&2te*stmt;
EN( LOOP;
EN( 7e&m$1-e;
EN( &m$1-e_$D;@
S>O ERRORS
!
E?ECUTE &m$1-e_$D.7e&m$1-e
SELECT "e&t_nameH "e&t_t$eH stat2s
9ROM USER_OBECTS
>ERE stat2s = +IN)ALI(+;
0
CREATE OR REPLACE PROCE(URE ne_"*
$_"1% IN "s."_1%T6PEH
$_t1t-e IN "s."_t1t-eT6PEH
-
7/23/2019 DEMO Codigos
119/146
@
S>O ERRORS
SET SER)EROUTPUT ON
E?ECUTE ne_" *+S6_ANAL+H +Sstem Ana-st+H '000
SELECT 4
9ROM "s
>ERE "_1% = +S6_ANAL+;
COMMIT;
CREATE OR REPLACE PROCE(URE a%%_"_,1st*
$_em$_1% IN em$-ees.em$-ee_1%T6PEH
$_ne_"1% IN "s."_1%T6PE IS
BEGIN
INSERT INTO "_,1st7
SELECT em$-ee_1%H ,17e_%ateH S6S(ATEH "_1%H %e$a7tment_1%
9ROM em$-ees
>ERE em$-ee_1% = $_em$_1%;
UP(ATE em$-ees
SET ,17e_%ate = S6S(ATEH
"_1% = $_ne_"1%H
sa-a7 = *SELECT m1n_sa-a7 500
9ROM "s
>ERE "_1% = $_ne_"1%
>ERE em$-ee_1% = $_em$_1%;
(BMS_OUTPUT.PUT_LINE *+A%%e% em$-ee + 33 $_em$_1% 33
+ %eta1-s t t,e OB_>ISTOR6 ta-e+;
(BMS_OUTPUT.PUT_LINE *+U$%ate% &277ent " 8 em$-ee + 33
$_em$_1%33 + t +33 $_ne_"1%;
-
7/23/2019 DEMO Codigos
120/146
E?CEPTION
>EN NO_(ATA_9OUN( T>EN
RAISE_APPLICATION_ERROR *000H +Em$-ee %es nt ex1stQ+;
EN( a%%_"_,1st;
@
S>O ERRORS
ALTER TABLE em$-ees (ISABLE ALL TRIGGERS;
ALTER TABLE "s (ISABLE ALL TRIGGERS;
ALTER TABLE "_,1st7 (ISABLE ALL TRIGGERS;
5ALTER TABLE em$-ees (ISABLE ALL TRIGGERS;
ALTER TABLE "s (ISABLE ALL TRIGGERS;
ALTER TABLE "_,1st7 (ISABLE ALL TRIGGERS;
'
SELECT 4 9ROM "_,1st7
>ERE em$-ee_1% = 0';
SELECT "_1%H sa-a7 9ROM em$-ees
>ERE em$-ee_1% = 0';
COMMIT;
#
ALTER TABLE em$-ees ENABLE ALL TRIGGERS;
ALTER TABLE "s ENABLE ALL TRIGGERS;
ALTER TABLE "_,1st7 ENABLE ALL TRIGGERS;
!
CREATE OR REPLACE PROCE(URE 2$%_"sa-*
$_"1% IN "s."_1%t$eH
$_ne_m1nsa- IN "s.m1n_sa-a7t$eH
$_ne_maxsa- IN "s.max_sa-a7t$e IS
-
7/23/2019 DEMO Codigos
121/146
e_7es27&e_2s E?CEPTION;
e_sa-_e777 E?CEPTION;
PRAGMA E?CEPTION_INIT *e_7es27&e_2s H 5;
BEGIN
I9 *$_ne_maxsa- F $_ne_m1nsa- T>EN
RAISE e_sa-_e777;
EN( I9;
SELECT INTO ERE "_1% = $_"1%;
E?CEPTION
>EN e_7es27&e_2s T>EN
RAISE_APPLICATION_ERROR *000H
+ 1n87mat1n 1s &277ent- -&e%H t7 -ate7.+;
>EN NO_(ATA_9OUN( T>EN
RAISE_APPLICATION_ERROR*000H +T,1s " I( %es nt ex1st+;
>EN e_sa-_e777 T>EN
RAISE_APPLICATION_ERROR*000H
+(ata e777: Max sa-a7 s,2-% e m7e t,an m1n sa-a7+;
EN( 2$%_"sa-;
@
S>O ERRORS
SET SERE)EROUTPUT ON
E?ECUTE 2$%_"sa-*+S6_ANAL+H #000H 0
0
-
7/23/2019 DEMO Codigos
122/146
ALTER TABLE em$-ees (ISABLE ALL TRIGGERS;
ALTER TABLE "s (ISABLE ALL TRIGGERS;
E?ECUTE 2$%_"sa-*+S6_ANAL+H #000H 000
SELECT 4
9ROM "s
>ERE "_1% = +S6_ANAL+;
ALTER TABLE em$-ees ENABLE ALL TRIGGERS;
ALTER TABLE "s ENABLE ALL TRIGGERS;
ALTER TRIGGER se&27e_em$-ees (ISABLE;
5
ALTER TABLE em$-ees
A(( *ex&ee%_aAR* (E9AULT +NO+
CONSTRAINT em$-ees_ex&ee%_aECK *ex&ee%_a
-
7/23/2019 DEMO Codigos
123/146
>ERE "_1% = "1%;
RETURN a
-
7/23/2019 DEMO Codigos
124/146
!
CREATE OR REPLACE 9UNCTION Det_ea7s_se7EN &_",_&s7NOT9OUN(;
-
7/23/2019 DEMO Codigos
125/146
0
SET SER)EROUTPUT ON
BEGIN
(BMS_OUTPUT.PUT_LINE *
+Em$-ee 0' ,as 7e% + 33 Det_ea7s_se7ERE em$-ee_1% = $_em$_em$1%_t$e;
BEGIN
OPEN &_em$"_&s7;
9ETC> &_em$"_&s7 BULK COLLECT INTO
-
7/23/2019 DEMO Codigos
126/146
CLOSE &_em$"_&s7;
RETURN O ERRORS
SET SER)EROUTPUT ON
BEGIN
(BMS_OUTPUT.PUT_LINE*+Em$-ee #' 7e% n + 33
Det_"_&2nt*#' 33 + %1e7ent "s.+;
EN(;
@
CREATE OR REPLACE PACKAGE em$"_$D IS
T6PE "s_ta-e_t$e IS TABLE O9 "s."_1%t$e;
PROCE(URE a%%_"_,1st*
$_em$_1% IN em$-ees.em$-ee_1%T6PEH
$_ne_"1% IN "s."_1%T6PE;
9UNCTION Det_"_&2nt*
$_em$_1% IN em$-ees.em$-ee_1%T6PE RETURN NUMBER;
9UNCTION Det_ea7s_se7
-
7/23/2019 DEMO Codigos
127/146
PROCE(URE ne_"*
$_"1% IN "s."_1%T6PEH
$_t1t-e IN "s."_t1t-eT6PEH
$_m1nsa- IN "s.m1n_sa-a7T6PE;
PROCE(URE 2$%_"sa-*
$_"1% IN "s."_1%t$eH
$_ne_m1nsa- IN "s.m1n_sa-a7t$eH
$_ne_maxsa- IN "s.max_sa-a7t$e;
EN( em$"_$D;
@S>O ERRORS
5
CREATE OR REPLACE PACKAGE BO(6 em$"_$D IS
PROCE(URE a%%_"_,1st*
$_em$_1% IN em$-ees.em$-ee_1%T6PEH
$_ne_"1% IN "s."_1%T6PE IS
BEGIN
INSERT INTO "_,1st7
SELECT em$-ee_1%H ,17e_%ateH S6S(ATEH "_1%H %e$a7tment_1%
9ROM em$-ees
>ERE em$-ee_1% = $_em$_1%;
UP(ATE em$-ees
SET ,17e_%ate = S6S(ATEH
"_1% = $_ne_"1%H
sa-a7 = *SELECT m1n_sa-a7 500
9ROM "s
>ERE "_1% = $_ne_"1%
>ERE em$-ee_1% = $_em$_1%;
(BMS_OUTPUT.PUT_LINE *+A%%e% em$-ee + 33 $_em$_1% 33
+ %eta1-s t t,e OB_>ISTOR6 ta-e+;
(BMS_OUTPUT.PUT_LINE *+U$%ate% &277ent " 8 em$-ee + 33
-
7/23/2019 DEMO Codigos
128/146
$_em$_1%33 + t +33 $_ne_"1%;
E?CEPTION
>EN NO_(ATA_9OUN( T>EN
RAISE_APPLICATION_ERROR *000H +Em$-ee %es nt ex1stQ+;
EN( a%%_"_,1st;
9UNCTION Det_"_&2nt*
$_em$_1% IN em$-ees.em$-ee_1%T6PE RETURN NUMBER IS
ERE em$-ee_1% = $_em$_1%;
BEGIN
OPEN &_em$"_&s7;
9ETC> &_em$"_&s7 BULK COLLECT INTO
-
7/23/2019 DEMO Codigos
129/146
SELECT MONT>S_BETEEN*en%_%ateH sta7t_%ate@ ERE em$-ee_1% = $_em$_1%;
-
7/23/2019 DEMO Codigos
130/146
(BMS_OUTPUT.PUT_LINE *$_"1% 33 + + 33 $_t1t-e 33+ +33
$_m1nsa- 33 + + 33 ERE "_1% = $_"1%
9OR UP(ATE O9 m1n_sa-a7 NOAIT;
UP(ATE "s
SET m1n_sa-a7 = $_ne_m1nsa-H
max_sa-a7 = $_ne_maxsa-
>ERE "_1% = $_"1%;
E?CEPTION
>EN e_7es27&e_2s T>EN
RAISE_APPLICATION_ERROR *000H
+ 1n87mat1n 1s &277ent- -&e%H t7 -ate7.+;
>EN NO_(ATA_9OUN( T>EN
RAISE_APPLICATION_ERROR*000H +T,1s " I( %es nt ex1st+;
>EN e_sa-_e777 T>EN
RAISE_APPLICATION_ERROR*000H
-
7/23/2019 DEMO Codigos
131/146
+(ata e777: Max sa-a7 s,2-% e m7e t,an m1n sa-a7+;
EN( 2$%_"sa-;
EN( em$"_$D;
@
S>O ERRORS
'
SET SER)EROUTPUT ON
E?ECUTE em$"_$D.ne_"*+PR_MAN+H +P2-1& Re-at1ns ManaDe7+H '50
#
SET SER)EROUTPUT ON
ALTER TRIGGER 2$%ate_"_,1st7 (ISABLE;
E?ECUTE em$"_$D.a%%_"_,1st*0H +PR_MAN+
ALTER TRIGGER 2$%ate_"_,1st7 ENABLE;
!
SELECT 4 9ROM "s >ERE "_1% = +PR_MAN+;
SELECT 4 9ROM "_,1st7 >ERE em$-ee_1% = 0;
SELECT "_1%H sa-a7 9ROM em$-ees >ERE em$-ee_1% = 0;
CREATE OR REPLACE TRIGGER &,e&_sa-_7anDe
BE9ORE UP(ATE O9 m1n_sa-a7H max_sa-a7 ON "s
9OR EAC> RO
(ECLARE
-
7/23/2019 DEMO Codigos
132/146
RAISE e_1nEN e_1nEN
RAISE_APPLICATION_ERROR*0550H
+Em$-ees ex1st ,se sa-a7 1s 2t 8 t,e s$e&1Je% 7anDe. +33
+T,e7e87e t,e s$e&1Je% sa-a7 7anDe &annt e 2$%ate%.+;
EN( &,e&_sa-_7anDe;
@
S>O ERRORS
50SELECT 4 9ROM "s
>ERE "_1% = +S6_ANAL+;
SELECT em$-ee_1%H -ast_nameH sa-a7
9ROM em$-ees
>ERE "_1% = +S6_ANAL+;
UP(ATE "s
SET m1n_sa-a7 = 5000H max_sa-a7 = #000
>ERE "_1% = +S6_ANAL+;
SELECT 4 9ROM "s
>ERE "_1% = +S6_ANAL+;
5
UP(ATE "s
SET m1n_sa-a7 = #000H max_sa-a7 = !000
>ERE "_1% = +S6_ANAL+;
5
CREATE OR REPLACE PACKAGE
-
7/23/2019 DEMO Codigos
133/146
$_8name IN meme7.J7st_nameT6PE (E9AULT NULLH
$_a%%7ess IN meme7.a%%7essT6PE (E9AULT NULLH
$_&1t IN meme7.&1tT6PE (E9AULT NULLH
$_$,ne IN meme7.$,neT6PE (E9AULT NULL;
9UNCTION ne_7enta-
*$_meme71% IN 7enta-.meme7_1%T6PEH
$_t1t-e1% IN 7enta-.t1t-e_1%T6PE
RETURN (ATE;
9UNCTION ne_7enta- *$_meme7name IN meme7.-ast_nameT6PEH
$_t1t-e1% IN 7enta-.t1t-e_1%T6PE
RETURN (ATE;
PROCE(URE 7et27n_mEN
RAISE_APPLICATION_ERROR*000H
+T,e n2me7 1s ass1Dne% t t,1s meme7 1s a-7ea% 1n 2seH +33
+t7 aDa1n.+;
ELSI9 e77&%e = T>EN RAISE_APPLICATION_ERROR*000H $_&ntext 33
-
7/23/2019 DEMO Codigos
134/146
+ ,as attem$te% t 2se a 87e1Dn e
-
7/23/2019 DEMO Codigos
135/146
$_t1t-e1% IN 7enta-.t1t-e_1%T6PEH
$_&$1% IN 7enta-.&$_1%T6PEH
$_sts IN t1t-e_&$.stat2sT6PE IS
AR*;
CURSOR &_7es_&s7 IS
SELECT 4
9ROM 7ese7ERE t1t-e_1% = $_t1t-e1%;
BEGIN
SELECT ++ INTO ERE t1t-e_1% = $_t1t-e1%;
UP(ATE 7enta-
SET a&t_7et_%ate = S6S(ATE
>ERE t1t-e_1% = $_t1t-e1%
AN( &$_1% = $_&$1% AN( a&t_7et_%ate IS NULL;
UP(ATE t1t-e_&$
SET stat2s = UPPER*$_sts
>ERE t1t-e_1% = $_t1t-e1% AN( &$_1% = $_&$1%;
9OR 7es_7e& IN &_7es_&s7 LOOP
I9 &_7es_&s79OUN( T>EN
(BMS_OUTPUT.PUT_LINE*+P2t t,1s mERS T>EN
ex&e$t1n_,an%-e7*SLCO(EH +RETURN_MO)IE+;
EN( 7et27n_m
-
7/23/2019 DEMO Codigos
136/146
$_t1t-e1% IN 7enta-.t1t-e_1%T6PE RETURN (ATE IS
CURSOR &_&$_&s7 IS
SELECT 4 9ROM t1t-e_&$
>ERE t1t-e_1% = $_t1t-e1%
9OR UP(ATE;
EN
UP(ATE t1t-e_&$
SET stat2s = +RENTE(+ >ERE CURRENT O9 &_&$_&s7;
INSERT INTO 7enta-*_%ateH &$_1%H meme7_1%H
t1t-e_1%H ex$_7et_%ate
)ALUES *S6S(ATEH &$_7e&.&$_1%H $_meme71%H
$_t1t-e1%H S6S(ATE ;
EN
ex&e$t1n_,an%-e7*SLCO(EH +NE_RENTAL+;
RETURN NULL;
EN( ne_7enta-;
-
7/23/2019 DEMO Codigos
137/146
9UNCTION ne_7enta-*
$_meme7name IN meme7.-ast_nameT6PEH
$_t1t-e1% IN 7enta-.t1t-e_1%T6PE RETURN (ATE IS
CURSOR &_&$_&s7 IS
SELECT 4 9ROM t1t-e_&$
>ERE t1t-e_1% = $_t1t-e1%
9OR UP(ATE;
EN
UP(ATE t1t-e_&$
SET stat2s = +RENTE(+
>ERE CURRENT O9 &_&$_&s7;
INSERT INTO 7enta- *_%ateH &$_1%H meme7_1%H
t1t-e_1%H ex$_7et_%ate
)ALUES *S6S(ATEH &$_7e&.&$_1%H
-
7/23/2019 DEMO Codigos
138/146
COMMIT;
I9 EN
RETURN*S6S(ATE ;
ELSE
7ese7R* 33
meme7_7e&.-ast_name 33 +H + 33 meme7_7e&.J7st_name;
EN( LOOP;
RETURN NULL;
>EN OT>ERS T>EN
ex&e$t1n_,an%-e7*SLCO(EH +NE_RENTAL+;
RETURN NULL;
EN( ne_7enta-;
PROCE(URE ne_meme7*
$_-name IN meme7.-ast_nameT6PEH
$_8name IN meme7.J7st_nameT6PE (E9AULT NULLH
$_a%%7ess IN meme7.a%%7essT6PE (E9AULT NULLH
$_&1t IN meme7.&1tT6PE (E9AULT NULLH
$_$,ne IN meme7.$,neT6PE (E9AULT NULL IS
BEGIN
INSERT INTO meme7*meme7_1%H -ast_nameH J7st_nameH
a%%7essH &1tH $,neH "1n_%ate
)ALUES*meme7_1%_se.NE?T)ALH $_-nameH $_8nameH
$_a%%7essH $_&1tH $_$,neH S6S(ATE;
-
7/23/2019 DEMO Codigos
139/146
COMMIT;
E?CEPTION
>EN OT>ERS T>EN
ex&e$t1n_,an%-e7*SLCO(EH +NE_MEMBER+;
EN( ne_meme7;
EN( O ERRORS
5
E?ECUTE aas+H +ames+H +C,estn2t St7eet+H+Bstn+H +'#5'#+
E?ECUTE 1aat,a (71
-
7/23/2019 DEMO Codigos
140/146
OR **TO_C>AR*S6S(ATEH +(+ = #
AN( *TO_(ATE*TO_C>AR*S6S(ATEH +,,:m1+H +,,:m1+ NOTBETEEN
TO_(ATE*+0!:00+H +,,:m1+ AN( TO_(ATE*+:00+H +,,:m1+ T>EN
RAISE_APPLICATION_ERROR*0H
+(ata &,anDes 7est71&te% t [&e ,27s.+;
EN( I9;
EN( t1me_&,e&;
@
S>O ERRORS
5#
CREATE OR REPLACE TRIGGER meme7_t71D
BE9ORE INSERT OR UP(ATE OR (ELETE ON meme7
CALL t1me_&,e&
@
CREATE OR REPLACE TRIGGER 7enta-_t71D
BE9ORE INSERT OR UP(ATE OR (ELETE ON 7enta-
CALL t1me_&,e&
@
CREATE OR REPLACE TRIGGER t1t-e_&$_t71D
BE9ORE INSERT OR UP(ATE OR (ELETE ON t1t-e_&$
CALL t1me_&,e&
@
CREATE OR REPLACE TRIGGER t1t-e_t71D
BE9ORE INSERT OR UP(ATE OR (ELETE ON t1t-eCALL t1me_&,e&
@
CREATE OR REPLACE TRIGGER 7ese7
-
7/23/2019 DEMO Codigos
141/146
TO_C>AR*CURRENT_(ATEH +((MON6666 >>:MI+ CURR_(ATE
9ROM (UAL;
C,anDe 27 t1me ne 2s1nDe \3]>>:MI 87mat s2&, t,at t,e &277ent
t1me 7et27ns a t1me eteen '$m an% !am
ALTER SESSION SET TIME_VONE=+0#:00+;
A%% a ne meme7 *87 a sam$-e test
E?ECUTE e-- 7-%Q+;
EN(;
@
'Rem
Rem />ea%e7: 2t-%t7ee.s-H< . @0@' ':: RKOOI Sta /
Rem
Rem C$71D,t *& O7a&-e C7$7at1n
Rem NAME
Rem %e$t7ee.s- S, "e&ts 7e&27s1
-
7/23/2019 DEMO Codigos
142/146
Rem "e&ts t,at a7e *7e&27s1
-
7/23/2019 DEMO Codigos
143/146
Rem 71 0@@ C7eat1n
%7$ se2en&e %e$t7ee_se
@
&7eate se2en&e %e$t7ee_se &a&,e 00 @4 &a&,e 00 t mae se2en&e8aste7 4@
@
%7$ ta-e %e$t7ee_tem$ta
@
&7eate ta-e %e$t7ee_tem$ta
*
"e&t_1% n2me7H
7e8e7en&e%_"e&t_1% n2me7H
nest_-e
-
7/23/2019 DEMO Codigos
144/146
&nne&t $717 "e&t_1% = 7e8e7en&e%_"e&t_1%
sta7t 1t, 7e8e7en&e%_"e&t_1% = %e$t7ee_J--."_1%;
ex&e$t1n
,en n_%ata_82n% t,en
7a1se_a$$-1&at1n_e777*0000H +ORU00: + 33
t$e 33 + + 33 s&,ema 33 +.+ 33 name 33 + as nt 82n%.+;
en%;
@
%7$
-
7/23/2019 DEMO Codigos
145/146
an% .ne7W = 2.2se7W
an% 2.name = D.D-nan
an% D.D-,%a%7 = .D-78,%-
an% .D-,%a%7 = a.D-,%a%7 @4 mae s27e 1t 1s nt a t7ans1t1
-
7/23/2019 DEMO Codigos
146/146
87m %e$t7ee
D72$ seW @4 S 2se7 &an m1t s7t ,en se-e&t1nD 87m 1%e$t7ee 4@
@