Skip to content

Commit 07882e3

Browse files
author
walter2016
committed
otras
1 parent b4189b6 commit 07882e3

File tree

3 files changed

+359
-1
lines changed

3 files changed

+359
-1
lines changed

QR11007.sql

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
CREATE OR REPLACE PACKAGE EXA1_QR11007 IS
2+
3+
FUNCTION FUNT1_COUNT(TABLA VARCHAR2) RETURN INT;
4+
5+
FUNCTION FUNT2_DATE(FECHA NVARCHAR2) RETURN DATE;
6+
7+
PROCEDURE PROC1_CHANGE;
8+
9+
END EXA1_QR11007;
10+
/
11+
CREATE OR REPLACE PACKAGE BODY EXA1_QR11007 IS
12+
13+
14+
FUNCTION FUNT1_COUNT(TABLA Varchar2) RETURN INT
15+
IS
16+
contador INT;
17+
BEGIN
18+
19+
IF (UPPER(TABLA) = 'EMPLOYEES') THEN
20+
select count(*) into contador from EMPLOYEES;
21+
elsif (UPPER(TABLA) = 'COUNTRIES') then
22+
select count(*) into contador from COUNTRIES;
23+
elsif (UPPER(TABLA) = 'DEPARTMENTS') then
24+
select count(*) into contador from DEPARTMENTS;
25+
elsif (UPPER(TABLA) = 'JOB_HISTORY') then
26+
select count(*) into contador from JOB_HISTORY;
27+
elsif (UPPER(TABLA) = 'JOBS') then
28+
select count(*) into contador from JOBS;
29+
elsif (UPPER(TABLA) = 'LOCATIONS') then
30+
select count(*) into contador from LOCATIONS;
31+
ELSE
32+
select count(*) into contador from REGIONS;
33+
end if;
34+
35+
return contador;
36+
END FUNT1_COUNT;
37+
38+
39+
FUNCTION FUNT2_DATE(FECHA NVARCHAR2) RETURN DATE
40+
IS
41+
i_fecha DATE;
42+
BEGIN
43+
-- select TO_DATE(i_fecha,'DD/MM/YYYY') into i_fecha from dual;
44+
SELECT TO_CHAR(TO_DATE(i_fecha, 'MM/DD/YYYY'), 'MM/DD/YYYY') into i_fecha FROM dual;
45+
46+
return i_fecha;
47+
48+
END FUNT2_DATE;
49+
50+
PROCEDURE PROC1_CHANGE
51+
is
52+
53+
begin
54+
55+
EXECUTE IMMEDIATE 'CREATE TABLE r_temp AS SELECT CAST(region_id as NUMBER(10,0)) region_id, region_name FROM regions';
56+
57+
EXECUTE IMMEDIATE 'RENAME regions TO region_2';
58+
EXECUTE IMMEDIATE 'rename r_temp to regions';
59+
EXECUTE IMMEDIATE 'alter table countries drop constraint COUNTR_REG_FK';
60+
EXECUTE IMMEDIATE 'CREATE UNIQUE INDEX "HR"."REG_ID_PK2" ON "HR"."REGIONS" ("REGION_ID")';
61+
EXECUTE IMMEDIATE 'ALTER TABLE "HR"."REGIONS" ADD CONSTRAINT "REG_ID_PK2" PRIMARY KEY ("REGION_ID") USING INDEX "HR"."REG_ID_PK2" ENABLE';
62+
EXECUTE IMMEDIATE 'ALTER TABLE "HR"."COUNTRIES" ADD CONSTRAINT "COUNTR_REG_FK" FOREIGN KEY ("REGION_ID") REFERENCES "HR"."REGIONS" ("REGION_ID") ENABLE';
63+
64+
65+
end PROC1_CHANGE;
66+
67+
68+
END EXA1_QR11007;

consutas/consutas.sql

Lines changed: 290 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,290 @@
1+
--CREATE OR REPLACE PROCEDURE update_salary()
2+
3+
4+
5+
6+
create or replace FUNCTION cadena_invertida(cadena VARCHAR2) RETURNS VARCHAR2
7+
IS
8+
9+
output_no VARCHAR2(100);
10+
11+
BEGIN
12+
for i in 1 .. length(cadena) loop
13+
output_no := output_no || '' ||
14+
substr(cadena, (length(cadena) - i + 1), 1);
15+
end loop;
16+
17+
dbms_output.put_line('La cadena no invertida es :' || cadena);
18+
dbms_output.put_line('La cadena invertida es :' || output_no);
19+
end;
20+
/
21+
22+
begin
23+
cadena_invertida('Hola');
24+
end;
25+
26+
27+
CREATE PACKAGE personnel AS
28+
TYPE staff_list IS TABLE OF employees.employee_id%TYPE;
29+
PROCEDURE update_salary (empleos_buenos IN staff_list);
30+
END personnel;
31+
/
32+
33+
CREATE PACKAGE BODY personnel AS
34+
PROCEDURE update_salary (empleos_buenos staff_list) IS
35+
BEGIN
36+
FOR i IN empleos_buenos.FIRST..empleos_buenos.LAST
37+
LOOP
38+
UPDATE employees SET salary = salary*0.006
39+
WHERE employees.employee_id = empleos_buenos(i);
40+
END LOOP;
41+
END;
42+
END;
43+
/
44+
45+
begin
46+
47+
update_salary(staff_list(100,102,103));
48+
end;
49+
50+
51+
select * from employees where EMPLOYEE_ID in (100,102,103);
52+
53+
/////////////////////////////////////////////
54+
55+
CREATE OR REPLACE PACKAGE HR_PROCEDURES IS
56+
57+
PROCEDURE AJUSTE_SALSARIAL(
58+
I_ID IN EMPLOYEES.EMPLOYEE_ID%TYPE,
59+
I_PORCENTAJE IN FLOAT
60+
);
61+
62+
PROCEDURE OBTENER_DATOS_EMPLEADOS(
63+
I_ID IN EMPLOYEES.EMPLOYEE_ID%TYPE,
64+
O_FIRST_NAME OUT EMPLOYEES.FIRST_NAME%TYPE,
65+
O_LAST_NAME OUT EMPLOYEES.LAST_NAME%TYPE,
66+
O_EMAIL OUT EMPLOYEES.EMAIL%TYPE
67+
);
68+
69+
END HR_PROCEDURES;
70+
71+
CREATE OR REPLACE PACKAGE BODY HR_PROCEDURES IS
72+
73+
PROCEDURE AJUSTE_SALSARIAL(
74+
I_ID IN EMPLOYEES.EMPLOYEE_ID%TYPE,
75+
I_PORCENTAJE IN FLOAT
76+
)
77+
IS
78+
BEGIN
79+
UPDATE EMPLOYEES
80+
SET SALARY=SALARY * (1 + I_PORCENTAJE)
81+
WHERE EMPLOYEE_ID = I_ID;
82+
END AJUSTE_SALSARIAL;
83+
84+
PROCEDURE OBTENER_DATOS_EMPLEADOS(
85+
I_ID IN EMPLOYEES.EMPLOYEE_ID%TYPE,
86+
O_FIRST_NAME OUT EMPLOYEES.FIRST_NAME%TYPE,
87+
O_LAST_NAME OUT EMPLOYEES.LAST_NAME%TYPE,
88+
O_EMAIL OUT EMPLOYEES.EMAIL%TYPE
89+
)
90+
IS
91+
BEGIN
92+
SELECT FIRST_NAME,
93+
LAST_NAME,
94+
EMAIL
95+
INTO
96+
O_FIRST_NAME,
97+
O_LAST_NAME,
98+
O_EMAIL
99+
FROM EMPLOYEES
100+
WHERE EMPLOYEE_ID = I_ID;
101+
102+
END OBTENER_DATOS_EMPLEADOS;
103+
104+
END HR_PROCEDURES;
105+
/
106+
107+
////////////////////////////////////////////////////////////////
108+
109+
CREATE OR REPLACE PACKAGE TUTORIA_5 IS
110+
111+
112+
PROCEDURE UPDATE_EMPLOYEE(EMP_IDS VARCHAR2);
113+
114+
FUNCTION invertir_Cadena(CADENA VARCHAR2) RETURN VARCHAR2;
115+
116+
117+
END TUTORIA_5;
118+
119+
CREATE OR REPLACE PACKAGE BODY TUTORIA_5 IS
120+
121+
PROCEDURE UPDATE_EMPLOYEE(EMP_IDS VARCHAR2)
122+
IS
123+
124+
BEGIN
125+
EXECUTE IMMEDIATE 'UPDATE HR.EMPLOYEES SET SALARY=2600 WHERE EMPLOYEE_ID IN (' || EMP_IDS || ')';
126+
END UPDATE_EMPLOYEE;
127+
128+
function invertir_Cadena(cadena VARCHAR2) return varchar2
129+
is
130+
output_no varchar2(100);
131+
begin
132+
for n in 1..length(cadena)
133+
loop
134+
output_no := output_no || '' || substr(cadena, (length(cadena) - n + 1), 1);
135+
end loop;
136+
return output_no;
137+
end invertir_Cadena;
138+
139+
END TUTORIA_5;
140+
141+
142+
/
143+
144+
begin
145+
TUTORIA_5.UPDATE_EMPLOYEE('120,123');
146+
end;
147+
148+
149+
SELECT TUTORIA_5.INVERTIR_CADENA('hola') FROM DUAL;
150+
151+
152+
/////////////////////////////////////////////////////////
153+
154+
155+
CREATE OR REPLACE PACKAGE EXA1_QR11007 IS
156+
157+
FUNCTION FUNT1_COUNT(TABLA VARCHAR2) RETURN INT;
158+
159+
FUNCTION FUNT2_DATE(FECHA NVARCHAR2) RETURN DATE;
160+
161+
PROCEDURE PROC1_CHANGE;
162+
163+
END EXA1_QR11007;
164+
/
165+
CREATE OR REPLACE PACKAGE BODY EXA1_QR11007 IS
166+
167+
168+
FUNCTION FUNT1_COUNT(TABLA Varchar2) RETURN INT
169+
IS
170+
contador INT;
171+
BEGIN
172+
173+
IF (UPPER(TABLA) = 'EMPLOYEES') THEN
174+
select count(*) into contador from EMPLOYEES;
175+
elsif (UPPER(TABLA) = 'COUNTRIES') then
176+
select count(*) into contador from COUNTRIES;
177+
elsif (UPPER(TABLA) = 'DEPARTMENTS') then
178+
select count(*) into contador from DEPARTMENTS;
179+
elsif (UPPER(TABLA) = 'JOB_HISTORY') then
180+
select count(*) into contador from JOB_HISTORY;
181+
elsif (UPPER(TABLA) = 'JOBS') then
182+
select count(*) into contador from JOBS;
183+
elsif (UPPER(TABLA) = 'LOCATIONS') then
184+
select count(*) into contador from LOCATIONS;
185+
ELSE
186+
select count(*) into contador from REGIONS;
187+
end if;
188+
189+
return contador;
190+
END FUNT1_COUNT;
191+
192+
193+
FUNCTION FUNT2_DATE(FECHA NVARCHAR2) RETURN DATE
194+
IS
195+
i_fecha DATE;
196+
BEGIN
197+
-- select TO_DATE(i_fecha,'DD/MM/YYYY') into i_fecha from dual;
198+
SELECT TO_CHAR(TO_DATE(i_fecha, 'MM/DD/YYYY'), 'MM/DD/YYYY') into i_fecha FROM dual;
199+
200+
return i_fecha;
201+
202+
END FUNT2_DATE;
203+
204+
PROCEDURE PROC1_CHANGE
205+
is
206+
207+
begin
208+
209+
EXECUTE IMMEDIATE 'CREATE TABLE r_temp AS SELECT CAST(region_id as NUMBER(10,0)) region_id, region_name FROM regions';
210+
211+
EXECUTE IMMEDIATE 'RENAME regions TO region_2';
212+
EXECUTE IMMEDIATE 'rename r_temp to regions';
213+
EXECUTE IMMEDIATE 'alter table countries drop constraint COUNTR_REG_FK';
214+
EXECUTE IMMEDIATE 'CREATE UNIQUE INDEX "HR"."REG_ID_PK2" ON "HR"."REGIONS" ("REGION_ID")';
215+
EXECUTE IMMEDIATE 'ALTER TABLE "HR"."REGIONS" ADD CONSTRAINT "REG_ID_PK2" PRIMARY KEY ("REGION_ID") USING INDEX "HR"."REG_ID_PK2" ENABLE';
216+
EXECUTE IMMEDIATE 'ALTER TABLE "HR"."COUNTRIES" ADD CONSTRAINT "COUNTR_REG_FK" FOREIGN KEY ("REGION_ID") REFERENCES "HR"."REGIONS" ("REGION_ID") ENABLE';
217+
218+
219+
end PROC1_CHANGE;
220+
221+
222+
END EXA1_QR11007;
223+
224+
SELECT EXA1_QR11007.FUNT2_DATE('02-05-2020')
225+
FROM DUAL;
226+
227+
////////////////////////////////////////
228+
229+
CREATE TABLE HR.WS_BUSQUEDA
230+
(
231+
busqueda_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
232+
fecha_ejecucion DATE not null,
233+
palabra_buscar VARCHAR2(50) NOT NULL,
234+
respuesta_ws VARCHAR2(4000) NOT NULL,
235+
PRIMARY KEY (busqueda_id)
236+
);
237+
/
238+
239+
create or replace package busqueda_ws IS
240+
241+
procedure buscar_ws(
242+
I_PALABRA IN WS_BUSQUEDA.palabra_buscar%TYPE
243+
);
244+
245+
END busqueda_ws;
246+
247+
248+
create or replace package body busqueda_ws IS
249+
250+
procedure buscar_ws(
251+
I_PALABRA IN WS_BUSQUEDA.palabra_buscar%TYPE
252+
)
253+
IS
254+
255+
req UTL_HTTP.REQ;
256+
resp UTL_HTTP.RESP;
257+
val VARCHAR2(4000);
258+
str varchar2(4000);
259+
BEGIN
260+
req := UTL_HTTP.BEGIN_REQUEST('http://api.plos.org/search?q=title:' || I_PALABRA);
261+
resp := UTL_HTTP.GET_RESPONSE(req);
262+
LOOP
263+
UTL_HTTP.READ_LINE(resp, val, TRUE);
264+
DBMS_OUTPUT.PUT_LINE(val);
265+
insert into HR.WS_BUSQUEDA(fecha_ejecucion,palabra_buscar,respuesta_ws) VALUES (SYSDATE,I_PALABRA,val);
266+
END LOOP;
267+
268+
269+
EXCEPTION
270+
WHEN
271+
UTL_HTTP.END_OF_BODY
272+
THEN
273+
UTL_HTTP.END_RESPONSE(resp);
274+
275+
END buscar_ws;
276+
277+
END busqueda_ws;
278+
279+
280+
BEGIN
281+
282+
busqueda_ws.buscar_ws('COVID');
283+
284+
end;
285+
286+
287+
select * from WS_BUSQUEDA
288+
289+
insert into HR.WS_BUSQUEDA(fecha_ejecucion,palabra_buscar,respuesta_ws) VALUES (SYSDATE,'I_PALABRA','val');
290+

parcial2.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ BEGIN
1111
inner join stores s
1212
on o.store_id = s.store_id
1313
where extract(year from o.order_datetime)=n_year
14-
and s.tore_name=v_store_name
14+
and s.store_name=v_store_name
1515
group by s.store_name, extract(year from o.order_datetime);
1616
dbms_output.put_line('Total de ordenes para '|| v_store_name||' en' ||n_year||':'||n_order_count);
1717

0 commit comments

Comments
 (0)