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