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
| START TRANSACTION;
USE `base`;
-- ===============
-- Table `medecin`
-- ===============
DROP TABLE IF EXISTS `medecin`;
CREATE TABLE `medecin`
( `id` integer unsigned auto_increment NOT NULL primary key,
`nom` varchar(255) NOT NULL,
`prenom` varchar(255) NOT NULL,
`mail` varchar(255) NOT NULL,
`specialite` smallint unsigned NOT NULL
) ENGINE=InnoDB
DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
ROW_FORMAT=COMPRESSED;
-- =====================
-- Procédure `ajout_med`
-- =====================
DROP PROCEDURE IF EXISTS ajout_med;
DELIMITER $$
CREATE PROCEDURE ajout_med
(
IN In_Qte INTEGER UNSIGNED,
IN In_Start INTEGER UNSIGNED,
IN In_End INTEGER UNSIGNED
)
DETERMINISTIC
NO SQL
BEGIN
DECLARE _max INTEGER UNSIGNED DEFAULT 100;
DECLARE _ind1 INTEGER UNSIGNED DEFAULT 0;
DECLARE _ind2 INTEGER UNSIGNED DEFAULT 0;
DECLARE _nbr INTEGER UNSIGNED DEFAULT 0;
DECLARE _nom VARCHAR(255) DEFAULT NULL;
DECLARE _pre VARCHAR(255) DEFAULT NULL;
DECLARE _mail VARCHAR(255) DEFAULT NULL;
DECLARE _spe INTEGER UNSIGNED DEFAULT 0;
SET _nbr = 1;
SET _ind1 = floor(In_Qte / _max);
ALTER TABLE `medecin` DISABLE KEYS;
WHILE _ind1 > 0
DO
START TRANSACTION;
SET _ind2 = _max;
WHILE _ind2 > 0
DO
SET _nom = concat('nom', right( concat('00000', _nbr), 5));
SET _pre = concat('prenom', right( concat('00000', _nbr), 5));
SET _mail = concat( concat('id', right( concat('00000', _nbr), 5)), '@docteur.com');
SET _spe = round( cast(rand() * (In_End - In_Start) as unsigned) + In_Start);
INSERT INTO `medecin` (`nom`,`prenom`,`mail`,`specialite`) VALUE (_nom, _pre, _mail, _spe);
SET _ind2 = _ind2 - 1;
SET _nbr = _nbr + 1;
END WHILE;
COMMIT;
SET _ind1 = _ind1 - 1;
END WHILE;
ALTER TABLE `medecin` ENABLE KEYS;
END$$
DELIMITER ;
-- ========================
-- Remplissage de `medecin`
-- ========================
call ajout_med(4000, 1, 8);
-- ===================
-- Vidage de `medecin`
-- ===================
select count(*) from medecin;
select * from medecin limit 10;
-- ===
-- Fin
-- ===
COMMIT;
EXIT |
Partager