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*/
/*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


0