
Procedimiento PL/SQL
Publicado por jose (7 intervenciones) el 15/04/2017 12:16:29
Hola, tengo que crear un procedimiento que reciba como parámetro el nombre de una localidad y muestre por pantalla un listado con el código, nombre y salario de los comerciales que trabajan en esa localidad.
Yo he hecho esto:
Y lo invoco de la siguiente manera:
El problema es que me muestra tanto la oficina de jerez como la de marbella, estaria muy agradecido si alguien me pudiese ayudar.
El script es:
Yo he hecho esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
create or replace PROCEDURE nom_loc(loc OFICINAS.LOCALIDAD%TYPE)
AS
CURSOR o_loc IS
SELECT CODIGO, DIRECCION, LOCALIDAD, PROVINCIA
FROM OFICINAS;
d_codigo oficinas.codigo%TYPE;
d_direccion oficinas.direccion%TYPE;
d_localidad oficinas.localidad%TYPE;
d_provincia oficinas.provincia%TYPE;
BEGIN
OPEN o_loc;
FETCH o_loc into d_codigo, d_direccion, d_localidad, d_provincia;
WHILE o_loc%FOUND LOOPDBMS_OUTPUT.PUT_LINE(d_codigo||' ' ||d_direccion||' '||d_localidad||' '||d_provincia);
FETCH o_loc into d_codigo, d_direccion, d_localidad, d_provincia;
END LOOP;
CLOSE o_loc;
END nom_loc;
Y lo invoco de la siguiente manera:
1
2
3
4
5
6
7
8
9
10
DECLARE
LOC VARCHAR2(50);
BEGIN
LOC := 'Marbella';
NOM_LOC(LOC => LOC
);--rollback;
END;
El problema es que me muestra tanto la oficina de jerez como la de marbella, estaria muy agradecido si alguien me pudiese ayudar.
El script es:
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
create table Oficinas (codigo varchar2(3) primary key,
direccion varchar2(50) not null,
localidad varchar2(50) not null,
provincia varchar2(20)
);create table Vehiculos (matricula varchar2(7) primary key,
marca varchar2(20) not null,
modelo varchar2(20),
nKilometros number(8) not null,
fRevision date
);create table Comerciales (codigo varchar2(3) primary key,
nombre varchar2(30) not null,
salario number(6,2) not null,
hijos number(2) not null,
fNacimiento date not null,codOficina varchar2(3),
vehiculoAsig varchar2(7),
constraint com_ofi_fk foreign key (codOficina) references Oficinas(codigo) on delete cascade,
constraint com_veh_fk foreign key (vehiculoAsig) references Vehiculos(matricula) on delete cascade
);create table Productos (referencia varchar2(6) primary key,
nombre varchar2(20) not null,
descripcion varchar2(100),
precio number(6,2) not null,
descuento number(2,0) not null
);create table Vender (codComercial varchar2(3),
refProducto varchar2(6),
cantidad number(6),
fecha date,primary key (codComercial, refProducto, fecha),
constraint ven_co_fk foreign key (codComercial) references Comerciales(codigo) on delete cascade,
constraint ven_ref_fk foreign key (refProducto) references Productos(referencia) on delete cascade
);insert into Oficinas values ('101','Avda. Carlos III, 23' ,'Aguadulce','Almería');
insert into Oficinas values ('202','Avda Servero Ochoa, 33' ,'Marbella','Málaga');
insert into Oficinas values ('303','Avda. de Arcos, 43' ,'Jerez de la Frontera','Cádiz');
insert into Oficinas values ('404','Avda. de Lisboa, 53' ,'Andújar','Jaén');
insert into Vehiculos values ('0101BCD', 'Peugeot', '206', 110022, TO_DATE('2011/12/24', 'YYYY/MM/DD'));
insert into Vehiculos values ('0202CBD', 'Opel', 'Corsa', 80999, TO_DATE('2011/12/12', 'YYYY/MM/DD'));
insert into Vehiculos values ('0303DFD', 'Toyota', 'Auris', 101200, TO_DATE('2010/02/01', 'YYYY/MM/DD'));
insert into Vehiculos values ('0404FDF', 'Toyota', 'Corolla', 58230, TO_DATE('2011/11/20', 'YYYY/MM/DD'));
insert into Vehiculos values ('0505GHG', 'Renault', 'Laguna', 12234, TO_DATE('2012/12/04', 'YYYY/MM/DD'));
insert into Vehiculos values ('0606DFD', 'Renault', 'Clio', 148023, TO_DATE('2010/12/01', 'YYYY/MM/DD'));
insert into Vehiculos values ('0707BDF', 'Renault', 'Clio', 133012,TO_DATE('2010/10/15', 'YYYY/MM/DD'));
insert into Vehiculos values ('0808GGH', 'Seat', 'Ibiza', 45023, TO_DATE('2011/10/13', 'YYYY/MM/DD'));
insert into Vehiculos values ('0909DDL', 'Seat', 'Leon', 99283,TO_DATE('2010/03/20', 'YYYY/MM/DD'));
insert into Comerciales values ('111','Pedro Alonso Jiménez',1200.50,0, TO_DATE('1960/02/01', 'YYYY/MM/DD'),'101','0101BCD');
insert into Comerciales values ('222','Julia Pérez Arribas',1305.75,1,TO_DATE('1971/12/11', 'YYYY/MM/DD'),'101','0202CBD');
insert into Comerciales values ('333','Juan Lozano Gómez',1080.25,3,TO_DATE('1975/08/21', 'YYYY/MM/DD'),'202','0303DFD');
insert into Comerciales values ('444','Sandra Molina Sánchez',1120.00,2,TO_DATE('1969/05/09', 'YYYY/MM/DD'),'303','0404FDF');
insert into Comerciales values ('555','Salvador Beltrán Jiménez',975.50,0,TO_DATE('1980/10/11', 'YYYY/MM/DD'),'303','0505GHG');
insert into Comerciales values ('666','Beatriz Martín Gutiérrez',1175.00,1,TO_DATE('1970/11/06', 'YYYY/MM/DD'),'404','0606DFD');
insert into Comerciales values ('777','Eduardo Martínez Puig',1100.50,2,TO_DATE('1967/01/16', 'YYYY/MM/DD'),'101','0707BDF');
insert into Comerciales values ('888','Juan Antonio Ochando Serrano',1000.50,0,TO_DATE('1982/03/03', 'YYYY/MM/DD'),'202','0808GGH');
insert into Comerciales values ('999','Marina Pérez Blanco',1070.20,3,TO_DATE('1972/07/21', 'YYYY/MM/DD'),'303','0909DDL');
insert into Productos values ('AC0001', 'Abrigo Caballero', 'Piel Color Marrón', 120.50, 15);
insert into Productos values ('AS0001', 'Abrigo Señora', 'Piel Color Marrón', 110.75, 25);
insert into Productos values ('CC0001', 'Camisa Caballero', 'Cuadros', 35.99, 10);
insert into Productos values ('PC0001', 'Pantalón Caballero', 'Vaquero', 34.90, 35);
insert into Productos values ('PC0002', 'Pantalón Caballero', 'Pana', 25.90, 0);
insert into Productos values ('AC0002', 'Abrigo Caballero', 'Piel Color Negro', 120.50, 15);
insert into Productos values ('CC0002', 'Camisa Caballero', 'Lisa Color Blanco', 35.99, 10);
insert into Productos values ('CC0003', 'Camisa Caballero', 'Lisa Color Azul', 35.99, 10);
insert into Productos values ('AS0002', 'Abrigo Señora', 'Piel Color Negro', 120.75, 15);
insert into Productos values ('AS0003', 'Abrigo Señora', 'Ante Color Marrón', 90.95, 35);
insert into Productos values ('PS0001', 'Pantalón Señora', 'Vaquero', 30.90, 30);
insert into Productos values ('PS0002', 'Pantalón Señora', 'Lino', 39.90, 40);
insert into Vender values ('111','PC0001',24,TO_DATE('2011/10/10', 'YYYY/MM/DD'));
insert into Vender values ('111','PC0002',48,TO_DATE('2011/03/22', 'YYYY/MM/DD'));
insert into Vender values ('111','CC0001',20,TO_DATE('2011/09/01', 'YYYY/MM/DD'));
insert into Vender values ('111','AS0001',12,TO_DATE('2011/10/03', 'YYYY/MM/DD'));
insert into Vender values ('222','AS0001',34,TO_DATE('2011/01/22', 'YYYY/MM/DD'));
insert into Vender values ('222','AC0001',60,TO_DATE('2011/09/06', 'YYYY/MM/DD'));
insert into Vender values ('222','AS0002',21,TO_DATE('2011/11/10', 'YYYY/MM/DD'));
insert into Vender values ('333','AC0001',15,TO_DATE('2011/02/18', 'YYYY/MM/DD'));
insert into Vender values ('333','AC0002',80,TO_DATE('2011/02/09', 'YYYY/MM/DD'));
insert into Vender values ('333','AC0002',12,TO_DATE('2011/02/23', 'YYYY/MM/DD'));
insert into Vender values ('333','CC0003',45,TO_DATE('2011/06/17', 'YYYY/MM/DD'));
insert into Vender values ('333','CC0003',10,TO_DATE('2011/06/09', 'YYYY/MM/DD'));
insert into Vender values ('444','CC0001',75,TO_DATE('2011/06/08', 'YYYY/MM/DD'));
insert into Vender values ('444','PC0001',60,TO_DATE('2011/01/19', 'YYYY/MM/DD'));
insert into Vender values ('555','PC0002',35,TO_DATE('2011/02/02', 'YYYY/MM/DD'));
insert into Vender values ('555','PS0001',23,TO_DATE('2011/02/28', 'YYYY/MM/DD'));
insert into Vender values ('555','CC0002',67,TO_DATE('2011/05/25', 'YYYY/MM/DD'));
insert into Vender values ('666','CC0002',21,TO_DATE('2011/05/11', 'YYYY/MM/DD'));
insert into Vender values ('666','AS0003',23,TO_DATE('2011/04/16', 'YYYY/MM/DD'));
insert into Vender values ('666','CC0001',33,TO_DATE('2011/04/18', 'YYYY/MM/DD'));
insert into Vender values ('666','CC0001',50,TO_DATE('2011/03/11', 'YYYY/MM/DD'));
insert into Vender values ('666','CC0002',78,TO_DATE('2011/03/02', 'YYYY/MM/DD'));
insert into Vender values ('777','AC0002',39,TO_DATE('2011/03/07', 'YYYY/MM/DD'));
insert into Vender values ('777','AS0003',18,TO_DATE('2011/05/11', 'YYYY/MM/DD'));
insert into Vender values ('888','AS0002',55,TO_DATE('2011/03/19', 'YYYY/MM/DD'));
insert into Vender values ('888','PC0001',78,TO_DATE('2011/06/20', 'YYYY/MM/DD'));
insert into Vender values ('888','PS0002',33,TO_DATE('2011/04/10', 'YYYY/MM/DD'));
insert into Vender values ('888','PC0002',76,TO_DATE('2011/02/01', 'YYYY/MM/DD'));
insert into Vender values ('888','CC0003',50,TO_DATE('2011/01/30', 'YYYY/MM/DD'));
insert into Vender values ('999','AS0003',60,TO_DATE('2011/01/30', 'YYYY/MM/DD'));
insert into Vender values ('999','AC0002',47,TO_DATE('2011/03/31', 'YYYY/MM/DD'));
insert into Vender values ('999','PC0001',80,TO_DATE('2011/03/22', 'YYYY/MM/DD'));
Valora esta pregunta


0