· 5 years ago · Mar 27, 2020, 06:50 PM
1--US DE LA BASE DE DADES
2use empresa;
3--DROPS DE PROCEDIMENTS I COLUMNES
4drop procedure if exists EMPLEADOS;
5drop procedure if exists appex;
6drop procedure if exists permdept;
7drop procedure if exists update_cliente;
8drop procedure if exists insert_cliente;
9drop procedure if exists delete_cliente;
10drop procedure if exists update_producto;
11drop procedure if exists insert_producto;
12drop procedure if exists delete_producto;
13drop procedure if exists update_comanda;
14drop procedure if exists insert_comanda;
15drop procedure if exists delete_comanda;
16drop procedure if exists update_detalle;
17drop procedure if exists insert_detalle;
18drop procedure if exists delete_detalle;
19DROP USER if exists CAP_CONTABILIDAD;
20DROP USER if exists CAP_INVESTIGACION;
21DROP USER if exists CAP_PRODUCCION;
22DROP USER if exists CAP_VENTAS;
23drop procedure if exists permcaps;
24drop procedure if exists duplicado;
25drop procedure if exists alta;
26Drop function if exists sumimport;
27DROP TABLE registres;
28--ALTER TABLE empresa.EMP drop COLUMN esborrat;
29--ALTER TABLE empresa.PRODUCTO drop COLUMN esborrat;
30--ALTER TABLE empresa.COMANDA drop COLUMN esborrat;
31--ALTER TABLE empresa.DETALLE drop COLUMN esborrat;
32--ALTER TABLE empresa.CLIENTE drop COLUMN esborrat;
33--ALTER TABLE empresa.DEPT drop COLUMN esborrat;
34
35--CAPS I PERMISOS CAPS
36CREATE USER IF NOT EXISTS CAP_CONTABILIDAD IDENTIFIED BY 'P@ssw0rddd';
37CREATE USER IF NOT EXISTS CAP_INVESTIGACION IDENTIFIED BY 'P@ssw0rddd';
38CREATE USER IF NOT EXISTS CAP_PRODUCCION IDENTIFIED BY 'P@ssw0rddd';
39CREATE USER IF NOT EXISTS CAP_VENTAS IDENTIFIED BY 'P@ssw0rddd';
40
41
42--CREAR REGISTRES TAULES I VISTES
43CREATE TABLE if not exists registres (
44 NUM int(6) auto_increment primary key,
45 COGNOM varchar(30) not null,
46 ACT varchar(60),
47 DATA_CRE timestamp default current_timestamp
48);
49
50ALTER TABLE empresa.EMP ADD COLUMN esborrat boolean default 0;
51ALTER TABLE empresa.PRODUCTO ADD COLUMN esborrat boolean default 0;
52ALTER TABLE empresa.COMANDA ADD COLUMN esborrat boolean default 0;
53ALTER TABLE empresa.DETALLE ADD COLUMN esborrat boolean default 0;
54ALTER TABLE empresa.CLIENTE ADD COLUMN esborrat boolean default 0;
55ALTER TABLE empresa.DEPT ADD COLUMN esborrat boolean default 0;
56
57create or replace view VEMP as select EMP_NO,APELLIDO,OFICIO,JEFE,FECHA_ALTA,DEPT_NO from empresa.EMP where esborrat=0;
58create or replace view VCLIENTE as select * from empresa.CLIENTE where esborrat=0;
59create or replace view VCOMANDA as select * from empresa.COMANDA where esborrat=0;
60create or replace view VDETALLE as select * from empresa.DETALLE where esborrat=0;
61create or replace view VDEPT as select * from empresa.DEPT where esborrat=0;
62create or replace view VPRODUCTO as select * from empresa.PRODUCTO where esborrat=0;
63
64--CREACIÓ DE PROCEDIMENTS
65delimiter //
66create procedure appex (in cgn varchar(45))
67BEGIN
68Declare continue handler for 1406 select "El nombre té molts més caràcters dels necessàris";
69Declare continue handler for 1264 select "El nombre té molts més caràcters dels necessàris";
70Declare continue handler for 1001 select "El cursor és invàlid";
71Declare continue handler for 6500 select "S'ha corromput la memòria!";
72set @sql := CONCAT('create user if not exists ',cgn,' IDENTIFIED BY "P@ssword123456"');
73prepare stmt23 from @sql;
74execute stmt23;
75deallocate prepare stmt23;
76END //
77
78--UPDATE dades de client
79create procedure update_cliente (in CLIENTE_COD1 int(4),in NOMBRE1 varchar(45),in DIRECCIÓN1 varchar (40) ,in CIUDAD1 varchar(30),in ESTADO1 varchar(2),
80in CODI_POSTAL1 varchar(9),in AREA1 smallint(3),in TELEFONO1 varchar(9),in REPR_COD1 smallint(3),in LIMIT_CREDITO1 decimal(9,2),in OBSERVACIONES1 text)
81BEGIN
82DECLARE CONTINUE HANDLER FOR 1406 SELECT "El nombre té molts més caràcters dels necessàris";
83DECLARE CONTINUE HANDLER FOR 1264 SELECT "El nombre té molts més caràcters dels necessàris";
84UPDATE CLIENTE SET CLIENTE_COD=CLIENTE_COD,NOMBRE=NOMBRE1,DIRECCIÓN=DIRECCIÓN1,CIUDAD=CIUDAD1,ESTADO=ESTADO1,CODI_POSTAL=CODI_POSTAL1,AREA=AREA1,TELEFONO=TELEFONO1,
85REPR_COD=REPR_COD1,LIMIT_CREDITO=LIMIT_CREDITO1,OBSERVACIONES=OBSERVACIONES1 WHERE CLIENTE_COD=CLIENTE_COD1;
86INSERT into registres (COGNOM,ACT) values (USER(),'ACTUALITZACIÓ CLIENT');
87END //
88
89--INSERT dades de client
90create procedure insert_cliente (in CLIENTE_COD1 int(4),in NOMBRE varchar(45),in DIRECCIÓN varchar (40) ,in CIUDAD varchar(30),in ESTADO varchar(2),
91in CODI_POSTAL varchar(9),in AREA smallint(3),in TELEFONO varchar(9),in REPR_COD smallint(3),in LIMIT_CREDITO decimal(9,2),in OBSERVACIONES text)
92BEGIN
93DECLARE CONTINUE HANDLER FOR 1406 SELECT "El nombre té molts més caràcters dels necessàris";
94DECLARE CONTINUE HANDLER FOR 1264 SELECT "El nombre té molts més caràcters dels necessàris";
95INSERT into CLIENTE (CLIENTE_COD,NOMBRE,DIRECCIÓN,CIUDAD,ESTADO,CODI_POSTAL,AREA,TELEFONO,REPR_COD,LIMIT_CREDITO,OBSERVACIONES) VALUES (CLIENTE_COD1,NOMBRE,DIRECCIÓN,CIUDAD,ESTADO,CODI_POSTAL,AREA,TELEFONO,REPR_COD,LIMIT_CREDITO,OBSERVACIONES);
96INSERT into registres (COGNOM,ACT) values (USER(),'INSERCIÓ CLIENT');
97END //
98
99--DELETE dades de client
100
101create procedure delete_cliente (in CLIENTE_COD1 int(4))
102BEGIN
103DECLARE CONTINUE HANDLER FOR 1406 SELECT "El nombre té molts més caràcters dels necessàris";
104DECLARE CONTINUE HANDLER FOR 1264 SELECT "El nombre té molts més caràcters dels necessàris";
105UPDATE CLIENTE set esborrat=1 WHERE CLIENTE_COD=CLIENTE_COD1;
106INSERT into registres (COGNOM,ACT) values (USER(),'SUPRESSIÓ CLIENT');
107END //
108
109--UPDATE dades de producto
110create procedure update_producto (in PROD_NUM1 int(6),in DESCRIPCIÓN1 varchar(30))
111BEGIN
112DECLARE CONTINUE HANDLER FOR 1406 SELECT "El nombre té molts més caràcters dels necessàris";
113DECLARE CONTINUE HANDLER FOR 1264 SELECT "El nombre té molts més caràcters dels necessàris";
114UPDATE PRODUCTO SET PROD_NUM=PROD_NUM,DESCRIPCIÓN=DESCRIPCIÓN1 WHERE PROD_NUM=PROD_NUM1;
115INSERT into registres (COGNOM,ACT) values (USER(),'ACTUALITZACIÓ PRODUCTE');
116END //
117
118--INSERT dades de producto
119create procedure insert_producto (in PROD_NUM1 int(6),in DESCRIPCIÓN varchar(30))
120BEGIN
121DECLARE CONTINUE HANDLER FOR 1406 SELECT "El nombre té molts més caràcters dels necessàris";
122DECLARE CONTINUE HANDLER FOR 1264 SELECT "El nombre té molts més caràcters dels necessàris";
123INSERT into PRODUCTO (PROD_NUM, DESCRIPCIÓN) VALUES (PROD_NUM1, DESCRIPCIÓN);
124INSERT into registres (COGNOM,ACT) values (USER(),'INSERT PRODUCTE');
125END //
126
127--DELETE dades de producto
128create procedure delete_producto (in PROD_NUM1 int(6))
129BEGIN
130DECLARE CONTINUE HANDLER FOR 1406 SELECT "El nombre té molts més caràcters dels necessàris";
131DECLARE CONTINUE HANDLER FOR 1264 SELECT "El nombre té molts més caràcters dels necessàris";
132UPDATE PRODUCTO set esborrat=1 WHERE PROD_NUM=PROD_NUM1;
133INSERT into registres (COGNOM,ACT) values (USER(),'SUPRESSIÓ PRODUCTE');
134END //
135
136-- UPDATE COMANDA
137create procedure update_comanda (in COM_NUM1 smallint(4),in COM_FECHA1 date,in COM_TIPO1 char(1),in CLIENTE_COD1 int(6) , in FECHA_TRAM1 date ,in TOTAL1 decimal(8,2))
138BEGIN
139DECLARE CONTINUE HANDLER FOR 1406 SELECT "El nombre té molts més caràcters dels necessàris";
140DECLARE CONTINUE HANDLER FOR 1264 SELECT "El nombre té molts més caràcters dels necessàris";
141UPDATE COMANDA SET COM_NUM=COM_NUM,COM_FECHA=COM_FECHA1,COM_TIPO=COM_TIPO1,CLIENTE_COD=CLIENTE_COD1,FECHA_TRAM=FECHA_TRAM1,TOTAL=TOTAL1 WHERE COM_NUM1=COM_NUM1;
142INSERT into registres (COGNOM,ACT) values (USER(),'ACTUALITZACIÓ COMANDA');
143END //
144
145-- INSERT COMANDA
146create procedure insert_comanda (in COM_NUM1 smallint(4),in COM_FECHA date,in COM_TIPO char(1),in CLIENTE_COD int(6),in FECHA_TRAM date,in TOTAL decimal(8,2))
147BEGIN
148DECLARE CONTINUE HANDLER FOR 1406 SELECT "El nombre té molts més caràcters dels necessàris";
149DECLARE CONTINUE HANDLER FOR 1264 SELECT "El nombre té molts més caràcters dels necessàris";
150INSERT INTO COMANDA (COM_NUM,COM_FECHA,COM_TIPO,CLIENTE_COD,FECHA_TRAM,TOTAL) values (COM_NUM1,COM_FECHA,COM_TIPO,CLIENTE_COD,FECHA_TRAM,TOTAL);
151INSERT into registres (COGNOM,ACT) values (USER(),'INSERT COMANDA');
152END //
153
154--DELETE COMANDA.
155
156create procedure delete_comanda (in COM_NUM1 smallint(4))
157BEGIN
158DECLARE CONTINUE HANDLER FOR 1406 SELECT "El nombre té molts més caràcters dels necessàris";
159DECLARE CONTINUE HANDLER FOR 1264 SELECT "El nombre té molts més caràcters dels necessàris";
160UPDATE COMANDA set esborrat=1 WHERE COM_NUM=COM_NUM1;
161INSERT into registres (COGNOM,ACT) values (USER(),'SUPRESSIÓ COMANDA');
162END //
163
164-- UPDATE DETALLE
165create procedure update_detalle (in COM_NUM1 smallint(4),in DETALLE_NUM1 smallint(4),in PROD_NUM1 int(6),in PRECIO_VENTA1 decimal(8,2),in CANTIDAD1 int(8),in IMPORTE1 decimal(8,2))
166BEGIN
167DECLARE CONTINUE HANDLER FOR 1406 SELECT "El nombre té molts més caràcters dels necessàris";
168DECLARE CONTINUE HANDLER FOR 1264 SELECT "El nombre té molts més caràcters dels necessàris";
169UPDATE DETALLE SET COM_NUM1=COM_NUM1,DETALLE_NUM=DETALLE_NUM1,PROD_NUM=PROD_NUM1,PRECIO_VENTA=PRECIO_VENTA1,CANTIDAD=CANTIDAD1,IMPORTE=IMPORTE1 WHERE COM_NUM1=COM_NUM1;
170INSERT into registres (COGNOM,ACT) values (USER(),'ACTUALITZACIÓ DETALLE');
171END //
172
173-- INSERT DETALLE
174create procedure insert_detalle (in COM_NUM1 smallint(4),in DETALLE_NUM smallint(4),in PROD_NUM int(6),in PRECIO_VENTA decimal(8,2),in CANTIDAD int(8),in IMPORTE decimal(8,2))
175BEGIN
176DECLARE CONTINUE HANDLER FOR 1406 SELECT "El nombre té molts més caràcters dels necessàris";
177DECLARE CONTINUE HANDLER FOR 1264 SELECT "El nombre té molts més caràcters dels necessàris";
178INSERT INTO DETALLE (COM_NUM,DETALLE_NUM,PROD_NUM,PRECIO_VENTA,CANTIDAD,IMPORTE) values (COM_NUM1,DETALLE_NUM,PROD_NUM,PRECIO_VENTA,CANTIDAD,IMPORTE);
179INSERT into registres (COGNOM,ACT) values (USER(),'INSERT DETALLE');
180END //
181
182--DELETE DETALLE.
183create procedure delete_detalle (in COM_NUM1 smallint(4))
184BEGIN
185DECLARE CONTINUE HANDLER FOR 1406 SELECT "El nombre té molts més caràcters dels necessàris";
186DECLARE CONTINUE HANDLER FOR 1264 SELECT "El nombre té molts més caràcters dels necessàris";
187UPDATE DETALLE set esborrat=1 where COM_NUM=COM_NUM1;
188INSERT into registres (COGNOM,ACT) values (USER(),'SUPRESSIÓ DETALLE');
189END //
190
191--CLASIFICACIÓ PERMISOS
192create procedure permdept (in cgn varchar(45))
193BEGIN
194declare dept int (2);
195Select DEPT_NO INTO dept FROM EMP where APELLIDO=cgn;
196if (dept=10) then
197 Set @select_emp := CONCAT('GRANT Select on empresa.VEMP TO ',cgn);
198 Set @select_comanda := CONCAT('GRANT Select on empresa.VCOMANDA TO ',cgn);
199 Set @select_detalle := CONCAT('GRANT Select on empresa.VDETALLE TO ',cgn);
200 Set @update_comanda := CONCAT('GRANT EXECUTE on procedure empresa.update_comanda TO ',cgn);
201 Set @insert_comanda := CONCAT('GRANT EXECUTE on procedure empresa.insert_comanda TO ',cgn);
202 Set @delete_comanda := CONCAT('GRANT EXECUTE on procedure empresa.delete_comanda TO ',cgn);
203 Set @update_detalle := CONCAT('GRANT EXECUTE on procedure empresa.update_detalle TO ',cgn);
204 Set @insert_detalle := CONCAT('GRANT EXECUTE on procedure empresa.insert_detalle TO ',cgn);
205 Set @delete_detalle := CONCAT('GRANT EXECUTE on procedure empresa.delete_detalle TO ',cgn);
206
207 prepare select_emp1 from @select_emp;
208 execute select_emp1;
209 deallocate prepare select_emp1;
210
211 prepare update_comanda1 from @update_comanda;
212 execute update_comanda1;
213 deallocate prepare update_comanda1;
214
215 prepare insert_comanda1 from @insert_comanda;
216 execute insert_comanda1;
217 deallocate prepare insert_comanda1;
218
219 prepare delete_comanda1 from @delete_comanda;
220 execute delete_comanda1;
221 deallocate prepare delete_comanda1;
222
223 prepare update_detalle1 from @update_detalle;
224 execute update_detalle1;
225 deallocate prepare update_detalle1;
226
227 prepare insert_detalle1 from @insert_detalle;
228 execute insert_detalle1;
229 deallocate prepare insert_detalle1;
230
231 prepare delete_detalle1 from @delete_detalle;
232 execute delete_detalle1;
233 deallocate prepare delete_detalle1;
234
235 prepare select_detalle1 from @select_detalle;
236 execute select_detalle1;
237 deallocate prepare select_detalle1;
238
239 prepare select_comanda1 from @select_comanda;
240 execute select_comanda1;
241 deallocate prepare select_comanda1 ;
242
243end if;
244if (dept=20) then
245 Set @select_dept := CONCAT('GRANT Select on empresa.VDEPT TO ',cgn);
246 Set @select_emp := CONCAT('GRANT Select on empresa.VEMP TO ',cgn);
247 Set @select_cliente := CONCAT('GRANT Select on empresa.VCLIENTE TO ',cgn);
248 Set @select_comanda := CONCAT('GRANT Select on empresa.VCOMANDA TO ',cgn);
249 Set @select_detalle := CONCAT('GRANT Select on empresa.VDETALLE TO ',cgn);
250 Set @select_producto := CONCAT('GRANT Select on empresa.VPRODUCTO TO ',cgn);
251
252 prepare select_emp1 from @select_emp;
253 execute select_emp1;
254 deallocate prepare select_emp1;
255
256 prepare select_dept1 from @select_dept;
257 execute select_dept1;
258 deallocate prepare select_dept1;
259
260 prepare select_cliente1 from @select_cliente;
261 execute select_cliente1;
262 deallocate prepare select_cliente1;
263
264 prepare select_detalle1 from @select_detalle;
265 execute select_detalle1;
266 deallocate prepare select_detalle1;
267
268 prepare select_comanda1 from @select_comanda;
269 execute select_comanda1;
270 deallocate prepare select_comanda1 ;
271
272 prepare select_ producto1 from @select_ producto;
273 execute select_ producto1;
274 deallocate prepare select_producto1;
275
276
277
278end if;
279if (dept=30) then
280 Set @select_cliente := CONCAT('GRANT Select on empresa.VCLIENTE TO ',cgn);
281 Set @update_cliente := CONCAT('GRANT EXECUTE on procedure empresa.update_cliente TO ',cgn);
282 Set @insert_cliente := CONCAT('GRANT EXECUTE on procedure empresa.insert_cliente TO ',cgn);
283 Set @delete_cliente := CONCAT('GRANT EXECUTE on procedure empresa.delete_cliente TO ',cgn);
284 Set @select_comanda := CONCAT('GRANT Select on empresa.VCOMANDA TO ',cgn);
285 Set @select_detalle := CONCAT('GRANT Select on empresa.VDETALLE TO ',cgn);
286
287 prepare select_cliente1 from @select_cliente;
288 execute select_cliente1;
289 deallocate prepare select_cliente1;
290
291 prepare update_cliente1 from @update_cliente;
292 execute update_cliente1;
293 deallocate prepare update_cliente1;
294
295 prepare insert_cliente1 from @insert_cliente;
296 execute insert_cliente1;
297 deallocate prepare insert_cliente1;
298
299 prepare delete_cliente1 from @delete_cliente;
300 execute delete_cliente1;
301 deallocate prepare delete_cliente1;
302
303 prepare select_detalle1 from @select_detalle;
304 execute select_detalle1;
305 deallocate prepare select_detalle1;
306
307 prepare select_comanda1 from @select_comanda;
308 execute select_comanda1;
309 deallocate prepare select_comanda1 ;
310
311end if;
312if (dept=40) then
313 Set @select_producto := CONCAT('GRANT Select on empresa.VPRODUCTO TO ',cgn);
314 Set @update_producto := CONCAT('GRANT EXECUTE on procedure empresa.update_producto TO ',cgn);
315 Set @insert_producto := CONCAT('GRANT EXECUTE on procedure empresa.insert_producto TO ',cgn);
316 Set @delete_producto := CONCAT('GRANT EXECUTE on procedure empresa.delete_producto TO ',cgn);
317
318 prepare select_ producto1 from @select_ producto;
319 execute select_ producto1;
320 deallocate prepare select_producto1;
321
322 prepare update_producto1 from @update_producto;
323 execute update_producto1;
324 deallocate prepare update_producto1;
325
326 prepare insert_producto1 from @insert_producto;
327 execute insert_producto1;
328 deallocate prepare insert_producto1;
329
330 prepare delete_producto1 from @delete_producto;
331 execute delete_producto1;
332 deallocate prepare delete_producto1;
333end if;
334END //
335
336--DUPLICATS USUARIS
337create procedure duplicado (in origen varchar(20),in cgn varchar(20))
338BEGIN
339declare maximo smallint (4);
340Declare continue handler for 1406 select "El nombre té molts més caràcters dels necessàris";
341Declare continue handler for 1264 select "El nombre té molts més caràcters dels necessàris";
342Declare continue handler for 1001 select "El cursor és invàlid";
343Declare continue handler for 6500 select "S'ha corromput la memòria!";
344Create table if not exists temporal like EMP;
345select max(EMP_NO)+1 into maximo from EMP;
346insert into temporal (EMP_NO,APELLIDO,OFICIO,JEFE,FECHA_ALTA,SALARIO,COMISIÓN,DEPT_NO) select maximo,APELLIDO,OFICIO,JEFE,FECHA_ALTA,SALARIO,COMISIÓN,DEPT_NO from EMP where APELLIDO=origen;
347update temporal set APELLIDO=cgn;
348insert into EMP select * from temporal;
349drop table temporal;
350END //
351
352--ALTA USUARIS
353create procedure alta (in EMP_NO1 smallint(4),in APELLIDO1 varchar(10),in OFICIO1 varchar(10),in JEFE1 smallint(4),in FECHA_ALTA1 date,in SALARIO1 int(10),in COMISIÓN1 int(10),in DEPT_NO1 tinyint(2))
354BEGIN
355Declare continue handler for 1406 select "El nombre té molts més caràcters dels necessàris";
356Declare continue handler for 1264 select "El nombre té molts més caràcters dels necessàris";
357Declare continue handler for 1001 select "El cursor és invàlid";
358Declare continue handler for 6500 select "S'ha corromput la memòria!";
359insert into EMP (EMP_NO,APELLIDO,OFICIO,JEFE,FECHA_ALTA,SALARIO,COMISIÓN,DEPT_NO) values (EMP_NO1,APELLIDO1,OFICIO1,JEFE1,FECHA_ALTA1,SALARIO1,COMISIÓN1,DEPT_NO1);
360call EMPLEADOS();
361END //
362
363delimiter ;
364
365Grant execute on procedure empresa.appex to CAP_CONTABILIDAD;
366Grant execute on procedure empresa.appex to CAP_INVESTIGACION;
367Grant execute on procedure empresa.appex to CAP_PRODUCCION;
368Grant execute on procedure empresa.appex to CAP_VENTAS;
369
370Grant execute on procedure empresa.duplicado to CAP_CONTABILIDAD;
371Grant execute on procedure empresa.duplicado to CAP_INVESTIGACION;
372Grant execute on procedure empresa.duplicado to CAP_PRODUCCION;
373Grant execute on procedure empresa.duplicado to CAP_VENTAS;
374
375Grant select,insert,update,delete on empresa.* to CAP_CONTABILIDAD;
376Grant select,insert,update,delete on empresa.* to CAP_INVESTIGACION;
377Grant select,insert,update,delete on empresa.* to CAP_PRODUCCION;
378Grant select,insert,update,delete on empresa.* to CAP_VENTAS;
379
380delimiter //
381
382--GESTIO COMANDES
383Create function sumimport (com int) RETURNS FLOAT(8,2)
384BEGIN
385Declare Var1 FLOAT(8,2);
386Set Var1 =(select sum(IMPORTE) from DETALLE where COM_NUM=com);
387update COMANDA set TOTAL = Var1 where COM_NUM=com;
388Return Var1;
389END //
390
391--PROCEDIMENT EMPLEATS FINAL
392CREATE procedure EMPLEADOS ()
393BEGIN
394Declare cgn varchar (20);
395Declare finalitza int default false;
396Declare apart1 cursor for select APELLIDO FROM EMP;
397Declare continue handler for NOT FOUND set finalitza=true;
398Declare exit handler for sqlexception rollback;
399Declare exit handler for sqlwarning rollback;
400Declare continue handler for 1406 select "El nombre té molts més caràcters dels necessàris";
401Declare continue handler for 1264 select "El nombre té molts més caràcters dels necessàris";
402Declare continue handler for 1001 select "El cursor és invàlid";
403Declare continue handler for 6500 select "S'ha corromput la memòria!";
404Declare continue handler for 6504 select "El cursor retorna un valor incompatible";
405Declare continue handler for 6501 select "Cursor ja obert!";
406open apart1;
407Bucle: LOOP
408 fetch apart1 into cgn;
409 if finalitza=true then
410 leave bucle;
411 end if;
412 call appex(cgn);
413 call permdept(cgn);
414 end LOOP bucle;
415
416close apart1;
417end //
418delimiter ;
419call empleats();