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