· 8 years ago · Dec 05, 2017, 11:18 AM
1Tipo de Quarto Número do Quarto
21 Entre 1000 e 1999
32 Entre 2000 e 2999
43 Entre 3000 e 3999
54 Entre 4000 e 4999
6
7CREATE TABLE tb_tipo_quarto
8 (
9 cd_tipo_quarto TINYINT NOT NULL AUTO_INCREMENT,
10 nm_tipo_quarto VARCHAR(50) NOT NULL ,
11 vl_tipo_quarto_diaria NUMERIC(7,2) NOT NULL,
12 PRIMARY KEY(cd_tipo_quarto)
13 ) ;
14
15CREATE TABLE tb_quarto(
16 cd_quarto INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
17 cd_tipo_quarto INT NOT NULL,
18 nm_quarto INT
19);
20
21DROP PROCEDURE IF EXISTS sp_gera_carga_quarto;
22DELIMITER |
23CREATE PROCEDURE sp_gera_carga_quarto(
24 p_cd_tipo_quarto INT
25)
26BEGIN
27
28 DECLARE v_n_quarto INT;
29 DECLARE v_qtd_quarto INT;
30 DECLARE v_cont INT DEFAULT 1;
31 DECLARE v_quarto_existe TINYINT;
32 DECLARE v_inicio INT;
33 DECLARE v_fim INT;
34
35 WHILE v_cont <= 10 DO
36
37 SET v_inicio = p_cd_tipo_quarto * 1000;
38 SET v_fim = v_inicio + 999;
39
40 SELECT
41 COUNT(*)
42 INTO v_qtd_quarto
43 FROM tb_quarto
44 WHERE cd_tipo_quarto = p_cd_tipo_quarto;
45
46 IF v_qtd_quarto = 10 THEN
47
48 SET v_cont = 11;
49
50 ELSE
51
52 SET v_n_quarto = (select floor(v_inicio+(rand()*(v_fim-v_inicio))));
53
54 SELECT
55 IF(COUNT(*) > 0,1,0)
56 INTO v_quarto_existe
57 FROM tb_quarto
58 WHERE nm_quarto = v_n_quarto;
59
60 IF v_quarto_existe = 0 THEN
61 INSERT INTO tb_quarto(cd_tipo_quarto,nm_quarto)
62 VALUES(p_cd_tipo_quarto,v_n_quarto);
63 SET v_cont = v_cont + 1;
64 END IF;
65
66
67 END IF;
68
69 END WHILE;
70
71 SELECT 'carga de quartos geradas';
72
73END
74|
75DELIMITER ;
76
77CALL sp_gera_carga_quarto(1);
78
79SELECT
80 *
81FROM tb_quarto
82WHERE cd_tipo_quarto = 1;