Skip to content

Commit b4189b6

Browse files
author
walter2016
committed
oka
1 parent f00dfda commit b4189b6

File tree

1 file changed

+171
-0
lines changed

1 file changed

+171
-0
lines changed

parcial2.sql

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
--Bloque anonimo
2+
3+
DECLARE
4+
v_store_name stores.store_name%TYPE:='London';
5+
n_year int:=2018;
6+
n_order_count int;
7+
BEGIN
8+
select count(*)
9+
into n_order_count
10+
from orders o
11+
inner join stores s
12+
on o.store_id = s.store_id
13+
where extract(year from o.order_datetime)=n_year
14+
and s.tore_name=v_store_name
15+
group by s.store_name, extract(year from o.order_datetime);
16+
dbms_output.put_line('Total de ordenes para '|| v_store_name||' en' ||n_year||':'||n_order_count);
17+
18+
END;
19+
20+
--Funciones
21+
--IN se comporta como constante
22+
--OUT parametros que no proveen valor pero son asignados y retornados
23+
--IN OUT proveen valor y son asignados y retornados io
24+
CREATE OR REPLACE FUNCTION obtener_conteo_ordenes_por_tienda_y_anio(
25+
i_store_name IN stores.store_name%TYPE,
26+
i_year IN INT
27+
)
28+
RETURN int IS
29+
n_order_count int;
30+
BEGIN
31+
select count(*)
32+
into n_order_count
33+
from orders o
34+
inner join stores s
35+
on o.store_id = s.store_id
36+
where extract(year from o.order_datetime)=i_year
37+
and s.tore_name=i_store_name
38+
group by s.store_name, extract(year from o.order_datetime);
39+
RETURN(n_order_count);
40+
end;
41+
42+
select obtener_conteo_ordenes_por_tienda_y_anio('Berlin',2018) from dual;
43+
DROP FUNCTION obtener_conteo_ordenes_por_tienda_y_anio;
44+
45+
--Procedimientos (son bloques anonimos almacenados), ejecutan acciones no retornan nada
46+
--Ejemplo 1:
47+
CREATE OR REPLACE PROCEDURE insertar_tienda(
48+
i_nombre IN stores.store_name%TYPE DEFAULT' Desconocido',
49+
i_loc IN stores.physical_address%TYPE DEFAULT 'Desconocido'
50+
)
51+
IS
52+
BEGIN
53+
INSERT INTO STORES(STORE_NAME,PHYSICAL_ADDRESS)
54+
VALUES(i_nombre,i_loc);
55+
end insertar_tienda;
56+
57+
BEGIN
58+
insertar_tienda();
59+
insertar_tienda('Training','New york');
60+
insertar_tienda(i_loc => 'BOSTON');
61+
END;
62+
DROP PROCEDURE insertar_tienda;
63+
64+
--Ejemplo 2:
65+
66+
CREATE OR REPLACE PROCEDURE ajuste_salarial(
67+
i_id IN EMPLOYEES.employee_id%TYPE,
68+
i_porcentaje IN FLOAT
69+
)
70+
IS
71+
BEGIN
72+
UPDATE EMPLOYEES
73+
SET SALARY = SALARY + (1+i_porcentaje)
74+
WHERE EMPLOYEE_ID=i_id;
75+
end ajuste_salarial;
76+
BEGIN
77+
ajuste_salarial(100,0.1);
78+
END;
79+
80+
--Ejemplo 3:
81+
82+
CREATE OR REPLACE PROCEDURE obtener_datos_empleado(
83+
i_id IN EMPLOYEES.employee_id%TYPE,
84+
o_first_name OUT EMPLOYEES.first_name%TYPE,
85+
o_last_name OUT EMPLOYEES.last_name%TYPE,
86+
)
87+
IS
88+
BEGIN
89+
SELECT FIRST_NAME, LAST_NAME
90+
INTO o_first_name,o_last_name
91+
FROM EMPLOYEES
92+
WHERE EMPLOYEE_ID=i_id
93+
end obtener_datos_empleado;
94+
95+
BEGIN
96+
obtener_datos_empleado(100);
97+
END;
98+
99+
100+
--Paquetes (agrupar objetos almacenados en la BD)
101+
--cabecera y cuerpo
102+
--declare: variable,cursores, excepciones, funciones procedimientos
103+
DROP PROCEDURE ajuste_salarial;
104+
DROP PROCEDURE obtener_datos_empleado;
105+
106+
CREATE OR REPLACE PACKAGE hr_procedures IS
107+
108+
PROCEDURE ajuste_salarial(
109+
i_id IN EMPLOYEES.employee_id%TYPE,
110+
i_porcentaje IN FLOAT);
111+
112+
PROCEDURE obtener_datos_empleado(
113+
i_id IN EMPLOYEES.employee_id%TYPE,
114+
o_first_name OUT EMPLOYEES.first_name%TYPE,
115+
o_last_name OUT EMPLOYEES.last_name%TYPE,
116+
);
117+
118+
END hr_procedures;
119+
120+
CREATE OR REPLACE PACKAGE BODY hr_procedures IS
121+
122+
PROCEDURE ajuste_salarial(
123+
i_id IN EMPLOYEES.employee_id%TYPE,
124+
i_porcentaje IN FLOAT
125+
) IS
126+
BEGIN
127+
UPDATE EMPLOYEES
128+
SET SALARY = SALARY + (1+i_porcentaje)
129+
WHERE EMPLOYEE_ID=i_id;
130+
end ajuste_salarial;
131+
132+
PROCEDURE obtener_datos_empleado(
133+
i_id IN EMPLOYEES.employee_id%TYPE,
134+
o_first_name OUT EMPLOYEES.first_name%TYPE,
135+
o_last_name OUT EMPLOYEES.last_name%TYPE,
136+
) IS
137+
BEGIN
138+
SELECT FIRST_NAME, LAST_NAME
139+
INTO o_first_name,o_last_name
140+
FROM EMPLOYEES
141+
WHERE EMPLOYEE_ID=i_id
142+
end obtener_datos_empleado;
143+
END hr_procedures;
144+
145+
DECLARE
146+
BEGIN
147+
hr_procedures.ajuste_salarial(100);
148+
hr_procedures.obtener_datos_empleado(100);
149+
END;
150+
151+
DROP PACKAGE ;
152+
DROP PACKAGE BODY;
153+
154+
155+
156+
157+
158+
159+
160+
161+
162+
163+
164+
165+
166+
167+
168+
169+
170+
171+

0 commit comments

Comments
 (0)