· 8 years ago · Jan 20, 2018, 10:58 PM
1DROP TABLE IF EXISTS animal;
2CREATE TABLE animal (
3 ani_int_codigo INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Código',
4 ran_int_codigo INT(11) UNSIGNED NULL COMMENT 'Raça',
5 pro_int_codigo INT(11) UNSIGNED NULL COMMENT 'Proprietário',
6 ani_var_nome VARCHAR(50) NOT NULL COMMENT 'Nome',
7 ani_cha_vivo CHAR(1) NOT NULL DEFAULT 'S' COMMENT 'Vivo|S:Sim;N:Não',
8 ani_dec_peso DECIMAL(8, 3) DEFAULT NULL COMMENT 'Peso',
9 ani_dti_inclusao TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Inclusão',
10 PRIMARY KEY (ani_int_codigo),
11 CONSTRAINT FK_animal_raca_animal_ran_int_codigo FOREIGN KEY (ran_int_codigo)
12 REFERENCES raca_animal(ran_int_codigo) ON DELETE RESTRICT ON UPDATE RESTRICT,
13 CONSTRAINT FK_animal_proprietario_pro_int_codigo FOREIGN KEY (pro_int_codigo)
14 REFERENCES proprietario(pro_int_codigo) ON DELETE RESTRICT ON UPDATE RESTRICT
15)
16ENGINE = INNODB
17AUTO_INCREMENT = 1
18AVG_ROW_LENGTH = 8192
19CHARACTER SET utf8
20COLLATE utf8_general_ci
21COMMENT = 'Animal';
22
23--
24-- Definition for table usuario
25--
26DROP TABLE IF EXISTS usuario;
27CREATE TABLE usuario (
28 usu_int_codigo INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Código',
29 usu_var_nome VARCHAR(50) NOT NULL COMMENT 'Nome',
30 usu_var_email VARCHAR(100) NOT NULL COMMENT 'Email',
31 usu_cha_status CHAR(1) NOT NULL DEFAULT 'A' COMMENT 'Status|A:Ativo;I:Inativo',
32 usu_dti_inclusao TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Inclusão',
33 PRIMARY KEY (usu_int_codigo),
34 INDEX IDX_usuario_usu_dti_inclusao (usu_dti_inclusao),
35 INDEX IDX_usuario_usu_var_nome (usu_var_nome),
36 UNIQUE INDEX UK_usuario_usu_var_email (usu_var_email)
37)
38ENGINE = INNODB
39AUTO_INCREMENT = 1
40AVG_ROW_LENGTH = 16384
41CHARACTER SET utf8
42COLLATE utf8_general_ci
43COMMENT = 'Usuario';
44
45--
46-- Definition for table vacina
47--
48DROP TABLE IF EXISTS vacina;
49CREATE TABLE vacina (
50 vac_int_codigo INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Código',
51 vac_var_nome VARCHAR(50) NOT NULL COMMENT 'Nome',
52 vac_dti_inclusao TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Inclusão',
53 PRIMARY KEY (vac_int_codigo)
54)
55ENGINE = INNODB
56AUTO_INCREMENT = 1
57AVG_ROW_LENGTH = 5461
58CHARACTER SET utf8
59COLLATE utf8_general_ci
60COMMENT = 'Vacina';
61
62--
63-- Definition for table animal_vacina
64--
65DROP TABLE IF EXISTS animal_vacina;
66CREATE TABLE animal_vacina (
67 anv_int_codigo INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Codigo',
68 ani_int_codigo INT(11) UNSIGNED NOT NULL COMMENT 'Animal',
69 vac_int_codigo INT(11) UNSIGNED NOT NULL COMMENT 'Vacina',
70 anv_dat_programacao DATE NOT NULL COMMENT 'Data Programacao',
71 anv_dti_aplicacao DATETIME DEFAULT NULL COMMENT 'Data Aplicacao',
72 usu_int_codigo INT(11) UNSIGNED DEFAULT NULL COMMENT 'Usuario que aplicou',
73 anv_dti_inclusao TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Inclusao',
74 PRIMARY KEY (anv_int_codigo),
75 CONSTRAINT FK_animal_vacina_animal_ani_int_codigo FOREIGN KEY (ani_int_codigo)
76 REFERENCES animal(ani_int_codigo) ON DELETE RESTRICT ON UPDATE RESTRICT,
77 CONSTRAINT FK_animal_vacina_usuario_usu_int_codigo FOREIGN KEY (usu_int_codigo)
78 REFERENCES usuario(usu_int_codigo) ON DELETE RESTRICT ON UPDATE RESTRICT,
79 CONSTRAINT FK_animal_vacina_vacina_vac_int_codigo FOREIGN KEY (vac_int_codigo)
80 REFERENCES vacina(vac_int_codigo) ON DELETE RESTRICT ON UPDATE RESTRICT
81)
82ENGINE = INNODB
83AUTO_INCREMENT = 1
84AVG_ROW_LENGTH = 16384
85CHARACTER SET utf8
86COLLATE utf8_general_ci
87COMMENT = 'AnimalVacina||Agenda de Vacinação';
88
89--
90-- Definition for table raça_animal
91--
92DROP TABLE IF EXISTS raca_animal;
93CREATE TABLE raca_animal (
94 ran_int_codigo INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Código',
95 ran_var_nome VARCHAR(50) NOT NULL COMMENT 'Nome',
96 ran_dti_inclusao TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Inclusão',
97 PRIMARY KEY (ran_int_codigo)
98)
99ENGINE = INNODB
100AUTO_INCREMENT = 1
101AVG_ROW_LENGTH = 5461
102CHARACTER SET utf8
103COLLATE utf8_general_ci
104COMMENT = 'Raça de Animal';
105
106--
107-- Definition for table proprietario
108--
109DROP TABLE IF EXISTS proprietario;
110CREATE TABLE proprietario (
111 pro_int_codigo INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Código',
112 pro_var_nome VARCHAR(50) NOT NULL COMMENT 'Nome',
113 pro_var_email VARCHAR(100) NOT NULL COMMENT 'Email',
114 pro_var_telefone VARCHAR(14) NOT NULL COMMENT 'Telefone',
115 pro_dti_inclusao TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Inclusão',
116 PRIMARY KEY (pro_int_codigo)
117)
118ENGINE = INNODB
119AUTO_INCREMENT = 1
120AVG_ROW_LENGTH = 5461
121CHARACTER SET utf8
122COLLATE utf8_general_ci
123COMMENT = 'Proprietário';
124
125DELIMITER $$
126
127--
128-- Definition for procedure sp_animalvacina_aplica
129--
130DROP PROCEDURE IF EXISTS sp_animalvacina_aplica$$
131CREATE PROCEDURE sp_animalvacina_aplica(IN p_anv_int_codigo INT(11), IN p_ani_int_codigo INT(11), IN p_usu_int_codigo INT(11), IN p_aplica CHAR(1), INOUT p_status BOOLEAN, INOUT p_msg TEXT)
132 SQL SECURITY INVOKER
133 COMMENT 'Procedure de Update'
134BEGIN
135
136 DECLARE v_existe boolean;
137 DECLARE v_ani_cha_vivo char(1);
138
139 DECLARE EXIT HANDLER FOR SQLEXCEPTION
140 BEGIN
141 ROLLBACK;
142 SET p_status = FALSE;
143 SET p_msg = 'Erro ao executar o procedimento.';
144 END;
145
146 SET p_msg = '';
147 SET p_status = FALSE;
148
149
150 -- VALIDACOES
151 SELECT IF(count(1) = 0, FALSE, TRUE)
152 INTO v_existe
153 FROM animal_vacina
154 WHERE anv_int_codigo = p_anv_int_codigo;
155 IF NOT v_existe THEN
156 SET p_msg = concat(p_msg, 'Registro não encontrado.<br />');
157 END IF;
158
159 -- VALIDAÇÕES
160 SELECT a.ani_cha_vivo
161 INTO v_ani_cha_vivo
162 FROM animal a
163 WHERE a.ani_int_codigo = p_ani_int_codigo;
164 IF v_ani_cha_vivo = 'N' THEN
165 SET p_msg = CONCAT(p_msg, 'Não pode ser programada uma vacina para um animal morto. <br />');
166 END IF;
167
168 IF p_aplica NOT IN ('S', 'N') THEN
169 SET p_msg = CONCAT(p_msg, 'Tipo de Aplicação Inválido. <br />');
170 END IF;
171
172 IF p_msg = '' THEN
173
174 START TRANSACTION;
175
176 UPDATE animal_vacina SET
177 anv_dti_aplicacao = IF(p_aplica = 'S', CURRENT_TIMESTAMP(), NULL),
178 usu_int_codigo = IF(p_aplica = 'S', p_usu_int_codigo, NULL)
179 WHERE anv_int_codigo = p_anv_int_codigo;
180
181 COMMIT;
182
183 SET p_status = TRUE;
184 SET p_msg = 'O registro foi alterado com sucesso.';
185
186 END IF;
187
188END
189$$
190
191
192--
193-- Definition for procedure sp_animalvacina_ins
194--
195DROP PROCEDURE IF EXISTS sp_animalvacina_ins$$
196CREATE PROCEDURE sp_animalvacina_ins(IN p_ani_int_codigo INT(11), IN p_vac_int_codigo INT(11), IN p_anv_dat_programacao DATE, INOUT p_status BOOLEAN, INOUT p_msg TEXT, INOUT p_insert_id INT(11))
197 SQL SECURITY INVOKER
198 COMMENT 'Procedure de Insert'
199BEGIN
200
201 DECLARE v_existe boolean;
202
203 DECLARE EXIT HANDLER FOR SQLEXCEPTION
204 BEGIN
205 ROLLBACK;
206 SET p_status = FALSE;
207 SET p_msg = 'Erro ao executar o procedimento.';
208 END;
209
210 SET p_msg = '';
211 SET p_status = FALSE;
212
213 -- VALIDAÇÕES
214 IF p_ani_int_codigo IS NULL THEN
215 SET p_msg = concat(p_msg, 'Animal não informado.<br />');
216 END IF;
217 IF p_vac_int_codigo IS NULL THEN
218 SET p_msg = concat(p_msg, 'Vacina não informada.<br />');
219 END IF;
220 IF p_anv_dat_programacao IS NULL THEN
221 SET p_msg = concat(p_msg, 'Data não informada.<br />');
222 END IF;
223
224 IF p_msg = '' THEN
225
226 START TRANSACTION;
227
228 INSERT INTO animal_vacina (ani_int_codigo, vac_int_codigo, anv_dat_programacao)
229 VALUES (p_ani_int_codigo, p_vac_int_codigo, p_anv_dat_programacao);
230
231 COMMIT;
232
233 SET p_status = TRUE;
234 SET p_msg = 'Um novo registro foi inserido com sucesso.';
235 SET p_insert_id = LAST_INSERT_ID();
236
237 END IF;
238
239END
240$$
241
242--
243-- Definition for procedure sp_animalvacina_upd
244--
245DROP PROCEDURE IF EXISTS sp_animalvacina_upd$$
246CREATE PROCEDURE sp_animalvacina_upd(IN p_anv_int_codigo INT(11),IN p_ani_int_codigo INT(11), IN p_vac_int_codigo INT(11), IN p_anv_dat_programacao DATE, INOUT p_status BOOLEAN, INOUT p_msg TEXT)
247 SQL SECURITY INVOKER
248 COMMENT 'Procedure de Update'
249BEGIN
250
251 DECLARE v_existe boolean;
252
253 DECLARE EXIT HANDLER FOR SQLEXCEPTION
254 BEGIN
255 ROLLBACK;
256 SET p_status = FALSE;
257 SET p_msg = 'Erro ao executar o procedimento.';
258 END;
259
260 SET p_msg = '';
261 SET p_status = FALSE;
262
263 -- VALIDAÇÕES
264 SELECT IF(count(1) = 0, FALSE, TRUE)
265 INTO v_existe
266 FROM animal_vacina
267 WHERE anv_int_codigo = p_anv_int_codigo;
268 IF NOT v_existe THEN
269 SET p_msg = concat(p_msg, 'Registro não encontrado.<br />');
270 END IF;
271
272 -- VALIDAÇÕES
273 IF p_ani_int_codigo IS NULL THEN
274 SET p_msg = concat(p_msg, 'Animal não informado.<br />');
275 END IF;
276 IF p_vac_int_codigo IS NULL THEN
277 SET p_msg = concat(p_msg, 'Vacina não informada.<br />');
278 END IF;
279 IF p_anv_dat_programacao IS NULL THEN
280 SET p_msg = concat(p_msg, 'Data não informada.<br />');
281 END IF;
282
283 IF p_msg = '' THEN
284
285 START TRANSACTION;
286
287 UPDATE animal_vacina
288 SET ani_int_codigo = p_ani_int_codigo,
289 vac_int_codigo = p_vac_int_codigo,
290 anv_dat_programacao = p_anv_dat_programacao
291 WHERE anv_int_codigo = p_anv_int_codigo;
292
293 COMMIT;
294
295 SET p_status = TRUE;
296 SET p_msg = 'Um novo registro foi inserido com sucesso.';
297
298 END IF;
299
300END
301$$
302
303--
304-- Definition for procedure sp_animalvacina_del
305--
306DROP PROCEDURE IF EXISTS sp_animalvacina_del$$
307CREATE PROCEDURE sp_animalvacina_del(IN p_anv_int_codigo INT(11), INOUT p_status BOOLEAN, INOUT p_msg TEXT)
308 SQL SECURITY INVOKER
309 COMMENT 'Procedure de Delete'
310BEGIN
311
312 DECLARE v_existe BOOLEAN;
313 DECLARE v_row_count int DEFAULT 0;
314
315 DECLARE EXIT HANDLER FOR SQLEXCEPTION
316 BEGIN
317 ROLLBACK;
318 SET p_status = FALSE;
319 SET p_msg = 'Erro ao executar o procedimento.';
320 END;
321
322 SET p_msg = '';
323 SET p_status = FALSE;
324
325 -- VALIDAÇÕES
326 SELECT IF(count(1) = 0, FALSE, TRUE)
327 INTO v_existe
328 FROM animal_vacina
329 WHERE anv_int_codigo = p_anv_int_codigo;
330 IF NOT v_existe THEN
331 SET p_msg = concat(p_msg, 'Registro não encontrado.<br />');
332 END IF;
333
334 IF p_msg = '' THEN
335
336 START TRANSACTION;
337
338 DELETE FROM animal_vacina
339 WHERE anv_int_codigo = p_anv_int_codigo;
340
341 SELECT ROW_COUNT() INTO v_row_count;
342
343 COMMIT;
344
345 IF (v_row_count > 0) THEN
346 SET p_status = TRUE;
347 SET p_msg = 'O Registro foi excluÃdo com sucesso';
348 END IF;
349
350 END IF;
351
352END
353$$
354
355
356--
357-- Definition for procedure sp_animal_del
358--
359DROP PROCEDURE IF EXISTS sp_animal_del$$
360CREATE PROCEDURE sp_animal_del(IN p_ani_int_codigo INT(11), INOUT p_status BOOLEAN, INOUT p_msg TEXT)
361 SQL SECURITY INVOKER
362 COMMENT 'Procedure de Delete'
363BEGIN
364
365 DECLARE v_existe BOOLEAN;
366 DECLARE v_row_count int DEFAULT 0;
367
368 DECLARE EXIT HANDLER FOR SQLEXCEPTION
369 BEGIN
370 ROLLBACK;
371 SET p_status = FALSE;
372 SET p_msg = 'Erro ao executar o procedimento.';
373 END;
374
375 SET p_msg = '';
376 SET p_status = FALSE;
377
378 -- VALIDAÇÕES
379 SELECT IF(count(1) = 0, FALSE, TRUE)
380 INTO v_existe
381 FROM animal
382 WHERE ani_int_codigo = p_ani_int_codigo;
383 IF NOT v_existe THEN
384 SET p_msg = concat(p_msg, 'Registro não encontrado.<br />');
385 END IF;
386
387 IF p_msg = '' THEN
388
389 START TRANSACTION;
390
391 DELETE FROM animal
392 WHERE ani_int_codigo = p_ani_int_codigo;
393
394 SELECT ROW_COUNT() INTO v_row_count;
395
396 COMMIT;
397
398 IF (v_row_count > 0) THEN
399 SET p_status = TRUE;
400 SET p_msg = 'O Registro foi excluÃdo com sucesso';
401 END IF;
402
403 END IF;
404
405END
406$$
407
408--
409-- Definition for procedure sp_animal_ins
410--
411DROP PROCEDURE IF EXISTS sp_animal_ins$$
412CREATE PROCEDURE sp_animal_ins(IN p_ran_int_codigo INT(11), IN p_pro_int_codigo INT(11), IN p_ani_var_nome VARCHAR(50), IN p_ani_dec_peso DECIMAL(8,3), IN p_ani_cha_vivo CHAR(1), INOUT p_status BOOLEAN, INOUT p_msg TEXT, INOUT p_insert_id INT(11))
413 SQL SECURITY INVOKER
414 COMMENT 'Procedure de Insert'
415BEGIN
416
417 DECLARE v_existe boolean;
418
419 DECLARE EXIT HANDLER FOR SQLEXCEPTION
420 BEGIN
421 ROLLBACK;
422 SET p_status = FALSE;
423 SET p_msg = 'Erro ao executar o procedimento.';
424 END;
425
426 SET p_msg = '';
427 SET p_status = FALSE;
428
429 -- VALIDAÇÕES
430 IF p_ani_var_nome IS NULL THEN
431 SET p_msg = concat(p_msg, 'Nome não informado.<br />');
432 END IF;
433 IF p_ani_cha_vivo IS NULL THEN
434 SET p_msg = concat(p_msg, 'Status não informado.<br />');
435 ELSE
436 IF p_ani_cha_vivo NOT IN ('S','N') THEN
437 SET p_msg = concat(p_msg, 'Status inválido.<br />');
438 END IF;
439 END IF;
440 IF p_ran_int_codigo IS NULL THEN
441 SET p_msg = concat(p_msg, 'Raça Animal não informada.<br />');
442 END IF;
443 IF p_pro_int_codigo IS NULL THEN
444 SET p_msg = concat(p_msg, 'Proprietário não informado.<br />');
445 END IF;
446
447 IF p_msg = '' THEN
448
449 START TRANSACTION;
450
451 INSERT INTO animal (ran_int_codigo, pro_int_codigo, ani_var_nome, ani_dec_peso, ani_cha_vivo)
452 VALUES (p_ran_int_codigo, p_pro_int_codigo, p_ani_var_nome, p_ani_dec_peso, p_ani_cha_vivo);
453
454 COMMIT;
455
456 SET p_status = TRUE;
457 SET p_msg = 'Um novo registro foi inserido com sucesso.';
458 SET p_insert_id = LAST_INSERT_ID();
459
460 END IF;
461
462END
463$$
464
465
466--
467-- Definition for procedure sp_animal_upd
468--
469DROP PROCEDURE IF EXISTS sp_animal_upd$$
470CREATE PROCEDURE sp_animal_upd(IN p_ani_int_codigo INT(11), IN p_ran_int_codigo INT(11), IN p_pro_int_codigo INT(11), IN p_ani_var_nome VARCHAR(50), IN p_ani_dec_peso DECIMAL(8,3), IN p_ani_cha_vivo CHAR(1), INOUT p_status BOOLEAN, INOUT p_msg TEXT)
471 SQL SECURITY INVOKER
472 COMMENT 'Procedure de Insert'
473BEGIN
474
475 DECLARE v_existe boolean;
476
477 DECLARE EXIT HANDLER FOR SQLEXCEPTION
478 BEGIN
479 ROLLBACK;
480 SET p_status = FALSE;
481 SET p_msg = 'Erro ao executar o procedimento.';
482 END;
483
484 SET p_msg = '';
485 SET p_status = FALSE;
486
487
488 -- VALIDAÇÕES
489 SELECT IF(count(1) = 0, FALSE, TRUE)
490 INTO v_existe
491 FROM animal
492 WHERE ani_int_codigo = p_ani_int_codigo;
493 IF NOT v_existe THEN
494 SET p_msg = concat(p_msg, 'Registro não encontrado.<br />');
495 END IF;
496
497 -- VALIDAÇÕES
498 IF p_ani_var_nome IS NULL THEN
499 SET p_msg = concat(p_msg, 'Nome não informado.<br />');
500 END IF;
501 IF p_ani_cha_vivo IS NULL THEN
502 SET p_msg = concat(p_msg, 'Status não informado.<br />');
503 ELSE
504 IF p_ani_cha_vivo NOT IN ('S','N') THEN
505 SET p_msg = concat(p_msg, 'Status inválido.<br />');
506 END IF;
507 END IF;
508 IF p_ran_int_codigo IS NULL THEN
509 SET p_msg = concat(p_msg, 'Raça Animal não informada.<br />');
510 END IF;
511 IF p_pro_int_codigo IS NULL THEN
512 SET p_msg = concat(p_msg, 'Proprietário não informado.<br />');
513 END IF;
514
515 IF p_msg = '' THEN
516
517 START TRANSACTION;
518
519 UPDATE animal
520 SET ran_int_codigo = p_ran_int_codigo,
521 pro_int_codigo = p_pro_int_codigo,
522 ani_var_nome = p_ani_var_nome,
523 ani_dec_peso = p_ani_dec_peso,
524 ani_cha_vivo = p_ani_cha_vivo
525 WHERE ani_int_codigo = p_ani_int_codigo;
526
527 COMMIT;
528
529 SET p_status = TRUE;
530 SET p_msg = 'Um novo registro foi inserido com sucesso.';
531
532 END IF;
533
534END
535$$
536
537
538--
539-- Definition for procedure sp_usuario_del
540--
541DROP PROCEDURE IF EXISTS sp_usuario_del$$
542CREATE PROCEDURE sp_usuario_del(IN p_usu_int_codigo INT(11), INOUT p_status BOOLEAN, INOUT p_msg TEXT)
543 SQL SECURITY INVOKER
544 COMMENT 'Procedure de Delete'
545BEGIN
546
547 DECLARE v_existe BOOLEAN;
548 DECLARE v_row_count int DEFAULT 0;
549
550 DECLARE EXIT HANDLER FOR SQLEXCEPTION
551 BEGIN
552 ROLLBACK;
553 SET p_status = FALSE;
554 SET p_msg = 'Erro ao executar o procedimento.';
555 END;
556
557 SET p_msg = '';
558 SET p_status = FALSE;
559
560 -- VALIDAÇÕES
561 SELECT IF(count(1) = 0, FALSE, TRUE)
562 INTO v_existe
563 FROM usuario
564 WHERE usu_int_codigo = p_usu_int_codigo;
565 IF NOT v_existe THEN
566 SET p_msg = concat(p_msg, 'Registro não encontrado.<br />');
567 END IF;
568
569 IF p_msg = '' THEN
570
571 START TRANSACTION;
572
573 DELETE FROM usuario
574 WHERE usu_int_codigo = p_usu_int_codigo;
575
576 SELECT ROW_COUNT() INTO v_row_count;
577
578 COMMIT;
579
580 IF (v_row_count > 0) THEN
581 SET p_status = TRUE;
582 SET p_msg = 'O Registro foi excluÃdo com sucesso';
583 END IF;
584
585 END IF;
586
587END
588$$
589
590--
591-- Definition for procedure sp_usuario_ins
592--
593DROP PROCEDURE IF EXISTS sp_usuario_ins$$
594CREATE PROCEDURE sp_usuario_ins(IN p_usu_var_nome VARCHAR(50), IN p_usu_var_email VARCHAR(100), IN p_usu_cha_status CHAR(1), INOUT p_status BOOLEAN, INOUT p_msg TEXT, INOUT p_insert_id INT(11))
595 SQL SECURITY INVOKER
596 COMMENT 'Procedure de Insert'
597BEGIN
598
599 DECLARE v_existe boolean;
600
601 DECLARE EXIT HANDLER FOR SQLEXCEPTION
602 BEGIN
603 ROLLBACK;
604 SET p_status = FALSE;
605 SET p_msg = 'Erro ao executar o procedimento.';
606 END;
607
608 SET p_msg = '';
609 SET p_status = FALSE;
610
611 -- VALIDAÇÕES
612 IF p_usu_var_nome IS NULL THEN
613 SET p_msg = concat(p_msg, 'Nome não informado.<br />');
614 END IF;
615 IF p_usu_var_email IS NULL THEN
616 SET p_msg = concat(p_msg, 'Email não informado.<br />');
617 ELSE
618 IF p_usu_var_email NOT REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$' THEN
619 SET p_msg = concat(p_msg, 'Email em formato inválido.<br />');
620 END IF;
621 END IF;
622 IF p_usu_cha_status IS NULL THEN
623 SET p_msg = concat(p_msg, 'Status não informado.<br />');
624 ELSE
625 IF p_usu_cha_status NOT IN ('A','I') THEN
626 SET p_msg = concat(p_msg, 'Status inválido.<br />');
627 END IF;
628 END IF;
629
630 SELECT IF(COUNT(1) > 0, TRUE, FALSE)
631 INTO v_existe
632 FROM usuario
633 WHERE usu_var_email = p_usu_var_email;
634 IF v_existe THEN
635 SET p_msg = concat(p_msg, 'Já existe usuário com este email.<br />');
636 END IF;
637
638 IF p_msg = '' THEN
639
640 START TRANSACTION;
641
642 INSERT INTO usuario (usu_var_nome, usu_var_email, usu_cha_status)
643 VALUES (p_usu_var_nome, p_usu_var_email, p_usu_cha_status);
644
645 COMMIT;
646
647 SET p_status = TRUE;
648 SET p_msg = 'Um novo registro foi inserido com sucesso.';
649 SET p_insert_id = LAST_INSERT_ID();
650
651 END IF;
652
653END
654$$
655
656--
657-- Definition for procedure sp_usuario_upd
658--
659DROP PROCEDURE IF EXISTS sp_usuario_upd$$
660CREATE PROCEDURE sp_usuario_upd(IN p_usu_int_codigo INT(11), IN p_usu_var_nome VARCHAR(50), IN p_usu_var_email VARCHAR(100), IN p_usu_cha_status CHAR(1), INOUT p_status BOOLEAN, INOUT p_msg TEXT)
661 SQL SECURITY INVOKER
662 COMMENT 'Procedure de Update'
663BEGIN
664
665 DECLARE v_existe BOOLEAN;
666
667 DECLARE EXIT HANDLER FOR SQLEXCEPTION
668 BEGIN
669 ROLLBACK;
670 SET p_status = FALSE;
671 SET p_msg = 'Erro ao executar o procedimento.';
672 END;
673
674 SET p_msg = '';
675 SET p_status = FALSE;
676
677 -- VALIDAÇÕES
678 SELECT IF(count(1) = 0, FALSE, TRUE)
679 INTO v_existe
680 FROM usuario
681 WHERE usu_int_codigo = p_usu_int_codigo;
682 IF NOT v_existe THEN
683 SET p_msg = concat(p_msg, 'Registro não encontrado.<br />');
684 END IF;
685
686 -- VALIDAÇÕES
687 IF p_usu_int_codigo IS NULL THEN
688 SET p_msg = concat(p_msg, 'Código não informado.<br />');
689 END IF;
690 IF p_usu_var_nome IS NULL THEN
691 SET p_msg = concat(p_msg, 'Nome não informado.<br />');
692 END IF;
693 IF p_usu_var_email IS NULL THEN
694 SET p_msg = concat(p_msg, 'Email não informado.<br />');
695 ELSE
696 IF p_usu_var_email NOT REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$' THEN
697 SET p_msg = concat(p_msg, 'Email em formato inválido.<br />');
698 END IF;
699 END IF;
700 IF p_usu_cha_status IS NULL THEN
701 SET p_msg = concat(p_msg, 'Status não informado.<br />');
702 ELSE
703 IF p_usu_cha_status NOT IN ('A','I') THEN
704 SET p_msg = concat(p_msg, 'Status inválido.<br />');
705 END IF;
706 END IF;
707
708 SELECT IF(COUNT(1) > 0, TRUE, FALSE)
709 INTO v_existe
710 FROM usuario
711 WHERE usu_var_email = p_usu_var_email
712 AND usu_int_codigo <> p_usu_int_codigo;
713 IF v_existe THEN
714 SET p_msg = concat(p_msg, 'Já existe usuário com este email.<br />');
715 END IF;
716
717 IF p_msg = '' THEN
718
719 START TRANSACTION;
720
721 UPDATE usuario
722 SET usu_var_nome = p_usu_var_nome,
723 usu_var_email = p_usu_var_email,
724 usu_cha_status = p_usu_cha_status
725 WHERE usu_int_codigo = p_usu_int_codigo;
726
727 COMMIT;
728
729 SET p_status = TRUE;
730 SET p_msg = 'O registro foi alterado com sucesso';
731
732 END IF;
733
734END
735$$
736
737--
738-- PROCEDURES DE PROPRIETÃRIO
739-- Definition for procedure sp_proprietario_del
740--
741DROP PROCEDURE IF EXISTS sp_proprietario_del$$
742CREATE PROCEDURE sp_proprietario_del(IN p_pro_int_codigo INT(11), INOUT p_status BOOLEAN, INOUT p_msg TEXT)
743 SQL SECURITY INVOKER
744 COMMENT 'Procedure de Delete'
745BEGIN
746
747 DECLARE v_existe BOOLEAN;
748 DECLARE v_row_count int DEFAULT 0;
749
750 DECLARE EXIT HANDLER FOR SQLEXCEPTION
751 BEGIN
752 ROLLBACK;
753 SET p_status = FALSE;
754 SET p_msg = 'Erro ao executar o procedimento.';
755 END;
756
757 SET p_msg = '';
758 SET p_status = FALSE;
759
760 -- VALIDAÇÕES
761 SELECT IF(count(1) = 0, FALSE, TRUE)
762 INTO v_existe
763 FROM proprietario
764 WHERE pro_int_codigo = p_pro_int_codigo;
765 IF NOT v_existe THEN
766 SET p_msg = concat(p_msg, 'Registro não encontrado.<br />');
767 END IF;
768
769 IF p_msg = '' THEN
770
771 START TRANSACTION;
772
773 DELETE FROM proprietario
774 WHERE pro_int_codigo = p_pro_int_codigo;
775
776 SELECT ROW_COUNT() INTO v_row_count;
777
778 COMMIT;
779
780 IF (v_row_count > 0) THEN
781 SET p_status = TRUE;
782 SET p_msg = 'O Registro foi excluÃdo com sucesso';
783 END IF;
784
785 END IF;
786
787END
788$$
789
790
791--
792-- Definition for procedure sp_proprietario_ins
793--
794DROP PROCEDURE IF EXISTS sp_proprietario_ins$$
795CREATE PROCEDURE sp_proprietario_ins(IN p_pro_var_nome VARCHAR(50), IN p_pro_var_email VARCHAR(100), IN p_pro_var_telefone VARCHAR(14), INOUT p_status BOOLEAN, INOUT p_msg TEXT, INOUT p_insert_id INT(11))
796 SQL SECURITY INVOKER
797 COMMENT 'Procedure de Insert'
798BEGIN
799
800 DECLARE v_existe boolean;
801
802 DECLARE EXIT HANDLER FOR SQLEXCEPTION
803 BEGIN
804 ROLLBACK;
805 SET p_status = FALSE;
806 SET p_msg = 'Erro ao executar o procedimento.';
807 END;
808
809 SET p_msg = '';
810 SET p_status = FALSE;
811
812 -- VALIDAÇÕES
813 IF p_pro_var_nome IS NULL THEN
814 SET p_msg = concat(p_msg, 'Nome não informado.<br />');
815 END IF;
816 IF p_pro_var_email IS NULL THEN
817 SET p_msg = concat(p_msg, 'Email não informado.<br />');
818 ELSE
819 IF p_pro_var_email NOT REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$' THEN
820 SET p_msg = concat(p_msg, 'Email em formato inválido.<br />');
821 END IF;
822 END IF;
823 IF p_pro_var_telefone IS NULL THEN
824 SET p_msg = concat(p_msg, 'Telefone não informado.<br />');
825 END IF;
826
827 SELECT IF(COUNT(1) > 0, TRUE, FALSE)
828 INTO v_existe
829 FROM proprietario
830 WHERE pro_var_email = p_pro_var_email;
831 IF v_existe THEN
832 SET p_msg = concat(p_msg, 'Já existe proprietário com este email.<br />');
833 END IF;
834
835 IF p_msg = '' THEN
836
837 START TRANSACTION;
838
839 INSERT INTO proprietario (pro_var_nome, pro_var_email, pro_var_telefone)
840 VALUES (p_pro_var_nome, p_pro_var_email, p_pro_var_telefone);
841
842 COMMIT;
843
844 SET p_status = TRUE;
845 SET p_msg = 'Um novo registro foi inserido com sucesso.';
846 SET p_insert_id = LAST_INSERT_ID();
847
848 END IF;
849
850END
851$$
852
853
854--
855-- Definition for procedure sp_proprietario_upd
856--
857DROP PROCEDURE IF EXISTS sp_proprietario_upd$$
858CREATE PROCEDURE sp_proprietario_upd(IN p_pro_int_codigo INT(11), IN p_pro_var_nome VARCHAR(50), IN p_pro_var_email VARCHAR(100), IN p_pro_var_telefone VARCHAR(14), INOUT p_status BOOLEAN, INOUT p_msg TEXT)
859 SQL SECURITY INVOKER
860 COMMENT 'Procedure de Update'
861BEGIN
862
863 DECLARE v_existe BOOLEAN;
864
865 DECLARE EXIT HANDLER FOR SQLEXCEPTION
866 BEGIN
867 ROLLBACK;
868 SET p_status = FALSE;
869 SET p_msg = 'Erro ao executar o procedimento.';
870 END;
871
872 SET p_msg = '';
873 SET p_status = FALSE;
874
875 -- VALIDAÇÕES
876 SELECT IF(count(1) = 0, FALSE, TRUE)
877 INTO v_existe
878 FROM proprietario
879 WHERE pro_int_codigo = p_pro_int_codigo;
880 IF NOT v_existe THEN
881 SET p_msg = concat(p_msg, 'Registro não encontrado.<br />');
882 END IF;
883
884 -- VALIDAÇÕES
885 IF p_pro_int_codigo IS NULL THEN
886 SET p_msg = concat(p_msg, 'Código não informado.<br />');
887 END IF;
888 IF p_pro_var_nome IS NULL THEN
889 SET p_msg = concat(p_msg, 'Nome não informado.<br />');
890 END IF;
891 IF p_pro_var_email IS NULL THEN
892 SET p_msg = concat(p_msg, 'Email não informado.<br />');
893 ELSE
894 IF p_pro_var_email NOT REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$' THEN
895 SET p_msg = concat(p_msg, 'Email em formato inválido.<br />');
896 END IF;
897 END IF;
898 IF p_pro_var_telefone IS NULL THEN
899 SET p_msg = concat(p_msg, 'Telefone não informado.<br />');
900 END IF;
901
902 SELECT IF(COUNT(1) > 0, TRUE, FALSE)
903 INTO v_existe
904 FROM proprietario
905 WHERE pro_var_email = p_pro_var_email
906 AND pro_int_codigo <> p_pro_int_codigo;
907 IF v_existe THEN
908 SET p_msg = concat(p_msg, 'Já existe proprietário com este email.<br />');
909 END IF;
910
911 IF p_msg = '' THEN
912
913 START TRANSACTION;
914
915 UPDATE proprietario
916 SET pro_var_nome = p_pro_var_nome,
917 pro_var_email = p_pro_var_email,
918 pro_var_telefone = p_pro_var_telefone
919 WHERE pro_int_codigo = p_pro_int_codigo;
920
921 COMMIT;
922
923 SET p_status = TRUE;
924 SET p_msg = 'O registro foi alterado com sucesso';
925
926 END IF;
927
928END
929$$
930
931
932DELIMITER ;
933
934--
935-- Definition for view vw_animal
936--
937DROP VIEW IF EXISTS vw_animal CASCADE;
938CREATE OR REPLACE
939 SQL SECURITY INVOKER
940VIEW vw_animal
941AS
942 select `animal`.`ani_int_codigo` AS `ani_int_codigo`,`animal`.`ran_int_codigo` AS `ran_int_codigo`,`animal`.`pro_int_codigo` AS `pro_int_codigo`,`animal`.`ani_var_nome` AS `ani_var_nome`,`animal`.`ani_dec_peso` AS `ani_dec_peso`, `raca_animal`.`ran_var_nome` AS `ran_var_nome`, `proprietario`.`pro_var_nome` AS `pro_var_nome`, `animal`.`ani_cha_vivo` AS `ani_cha_vivo`, (case `animal`.`ani_cha_vivo` when 'S' then 'Sim' when 'N' then 'Não' end) AS `ani_var_vivo`, `animal`.`ani_dti_inclusao` AS `ani_dti_inclusao`,date_format(`animal`.`ani_dti_inclusao`,'%d/%m/%Y %H:%i:%s') AS `ani_dtf_inclusao` from `animal` inner join `raca_animal` on `animal`.`ran_int_codigo` = `raca_animal`.`ran_int_codigo` inner join proprietario on `animal`.`pro_int_codigo` = `proprietario`.`pro_int_codigo`;
943
944
945--
946-- Definition for view vw_usuario
947--
948DROP VIEW IF EXISTS vw_usuario CASCADE;
949CREATE OR REPLACE
950 SQL SECURITY INVOKER
951VIEW vw_usuario
952AS
953 select `usuario`.`usu_int_codigo` AS `usu_int_codigo`,`usuario`.`usu_var_nome` AS `usu_var_nome`,`usuario`.`usu_var_email` AS `usu_var_email`,`usuario`.`usu_cha_status` AS `usu_cha_status`,(case `usuario`.`usu_cha_status` when 'A' then 'Ativo' when 'I' then 'Inativo' end) AS `usu_var_status`,`usuario`.`usu_dti_inclusao` AS `usu_dti_inclusao`,date_format(`usuario`.`usu_dti_inclusao`,'%d/%m/%Y %H:%i:%s') AS `usu_dtf_inclusao` from `usuario`;
954
955--
956-- Definition for view vw_vacina
957--
958DROP VIEW IF EXISTS vw_vacina CASCADE;
959CREATE OR REPLACE
960 SQL SECURITY INVOKER
961VIEW vw_vacina
962AS
963 select `vacina`.`vac_int_codigo` AS `vac_int_codigo`,`vacina`.`vac_var_nome` AS `vac_var_nome`,`vacina`.`vac_dti_inclusao` AS `vac_dti_inclusao`,date_format(`vacina`.`vac_dti_inclusao`,'%d/%m/%Y %H:%i:%s') AS `vac_dtf_inclusao` from `vacina`;
964
965
966--
967-- Definition for view vw_proprietario
968--
969DROP VIEW IF EXISTS vw_proprietario CASCADE;
970CREATE OR REPLACE
971 SQL SECURITY INVOKER
972VIEW vw_proprietario
973AS
974 select `proprietario`.`pro_int_codigo` AS `pro_int_codigo`,`proprietario`.`pro_var_nome` AS `pro_var_nome`,`proprietario`.`pro_var_email` AS `pro_var_email`,`proprietario`.`pro_var_telefone` AS `pro_var_telefone`,`proprietario`.`pro_dti_inclusao` AS `pro_dti_inclusao`,date_format(`proprietario`.`pro_dti_inclusao`,'%d/%m/%Y %H:%i:%s') AS `pro_dtf_inclusao` from `proprietario`;
975
976
977--
978-- Definition for view vw_animal
979--
980DROP VIEW IF EXISTS vw_animal_vacina CASCADE;
981CREATE OR REPLACE
982 SQL SECURITY INVOKER
983VIEW vw_animal_vacina
984AS
985 select `animal_vacina`.`anv_int_codigo` AS `anv_int_codigo`,`animal_vacina`.`ani_int_codigo` AS `ani_int_codigo`,`animal`.`ani_var_nome` AS `ani_var_nome`,`animal_vacina`.`vac_int_codigo` AS `vac_int_codigo`,`vacina`.`vac_var_nome` AS `vac_var_nome`,`animal_vacina`.`anv_dat_programacao` AS `anv_dat_programacao`,date_format(`animal_vacina`.`anv_dat_programacao`,'%d/%m/%Y') AS `anv_dtf_programacao`,`animal_vacina`.`anv_dti_aplicacao` AS `anv_dti_aplicacao`,date_format(`animal_vacina`.`anv_dti_aplicacao`,'%d/%m/%Y %H:%i:%s') AS `anv_dtf_aplicacao`,
986 `animal_vacina`.`usu_int_codigo` AS `usu_int_codigo`,`usuario`.`usu_var_nome` AS `usu_var_nome` from `animal_vacina` inner join `animal` on `animal_vacina`.`ani_int_codigo` = `animal`.`ani_int_codigo` inner join `vacina` on `animal_vacina`.`vac_int_codigo` = `vacina`.`vac_int_codigo` left join `usuario` on `animal_vacina`.`usu_int_codigo` = `usuario`.`usu_int_codigo`;
987
988
989--
990-- Dumping data for table usuario
991--
992INSERT INTO usuario VALUES
993(1, 'Joe', 'joe@doe.com', 'A', '2016-03-25 13:23:14');
994
995--
996-- Dumping data for table vacina
997--
998INSERT INTO vacina VALUES
999(1, 'Vanguard', '2016-03-25 15:03:35'),
1000(2, 'Anti-rábica', '2016-03-25 15:03:44'),
1001(3, 'Leshimune', '2016-03-25 15:04:15');
1002
1003--
1004-- Dumping data for table raca_animal
1005--
1006INSERT INTO raca_animal VALUES
1007(1, 'Cachorro - Poodle', '2018-01-17 15:03:35'),
1008(2, 'Cachorro - Bull Terrier', '2018-01-17 15:03:44'),
1009(3, 'Gato - Siamês', '2018-01-17 15:04:15'),
1010(4, 'Gato - Sphynx', '2018-01-17 15:04:15'),
1011(5, 'Cavalo - Mangalarga', '2018-01-17 15:04:15');