Oracle - Ejercicio pl sql cursores

 
Vista:

Ejercicio pl sql cursores

Publicado por mattia (1 intervención) el 25/04/2016 17:43:30
Me he quedado atascado, si me pueden ayudar por favor . Gracias


/*Procedimiento que reciba como argumento un caracter alfabético y visualice el número de empleado y la letra inicial y final del apellido de todos los empleados cuyo salario es menor que la media salarial en la empresa. Se generará una excepción de usuario si la letra inicial o final coincide con la letra introducida como argumentos*/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
CREATE OR REPLACE PROCEDURE caracter (newcar CHAR)
AS
 
CURSOR c_car IS SELECT emp_no, apellido from emple where apellido = newcar;
 
v_ape c_car%ROWTYPE;
 
CURSOR cemp IS SELECT salario from emple WHERE depart.emp_no = emple.emp_no;
vsalario cemp%ROWTYPE;
 
error EXCEPTION;
v_media emple.salario%TYPE;
car CHAR;
 
BEGIN
 
OPEN c_car;
 
FETCH c_car INTO v_ape;
 
	WHILE (c_car%FOUND)LOOP
	SELECT avg(salario) INTO v_media FROM emple WHERE emple.apellido = newcar;
 
	OPEN cemp;
	FETCH cemp INTO vsalario;
 
		IF (vsalario < v_media) THEN
 
	FOR i IN 1..LENGTH(newcar) LOOP
		car:=SUBSTR(newcar,strlen(newcar),1)
 
 
	DBMS_OUTPUT.PUT_LINE ( 'el empleado: ' || v_ape.emp_no || 'su apellido empieza por :' || car || ' y finaliza por : ' || car');

	FETCH cemp INTO vsalario;
	IF (newcar = car ) THEN
		RAISE error;

	END LOOP;

	CLOSE cemp;
FETCH c_car INTO v_ape;

CLOSE c_car;

EXCEPTION

WHEN error THEN
	DBMS_OUTPUT.PUT_LINE ('La letra inicial o final coincide con la introducida como argumento');

END;
/
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ejercicio pl sql cursores

Publicado por Fabián Calderón (2 intervenciones) el 05/07/2018 21:05:02
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
create or replace procedure ejercicio7(v_caracter char) is
v_salario_total integer;
v_cantidad_salarios integer;
v_media_salarial integer;
v_largo_apellido integer;
v_letra_exception exception;
v_letra_inicial char(1);
v_letra_final char(1);
v_apellido varchar2(30);
v_contador integer:=0;
begin
select sum(salary) into v_salario_total from employees;
select count(salary) into v_cantidad_salarios from employees;
v_media_salarial:=v_salario_total/v_cantidad_salarios;
for cur_emp_info in(select last_name from employees where salary<v_media_salarial) loop
begin
v_contador:=v_contador+1;
v_largo_apellido:=length(cur_emp_info.last_name);
v_letra_inicial:=substr(cur_emp_info.last_name,1,1);
v_letra_final:=substr(cur_emp_info.last_name,v_largo_apellido,1);
if v_letra_inicial=v_caracter or v_letra_final=v_caracter then
v_apellido:=cur_emp_info.last_name;
raise v_letra_exception;
else
dbms_output.put_line('El apellido '||cur_emp_info.last_name||' no tiene el caracter '||v_caracter||' en la letra inicial o final');
end if;
Exception
when v_letra_exception then
dbms_output.put_line('El apellido '||v_apellido||' tiene el caracter ');
end;
end loop;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar