Procédures stockées libres
Posté par Clem | mercredi 4 novembre 2009 à 11:26 | rss
PostgreSQL et depuis peu Mysql permettent également de créer ces objets.
L'exemple ci-dessous servira à alimenter une table habilement nommée "toto" avec un nombre de lignes mis en paramètres.
Tout d'abord, nous allons aborder le cas de PostgreSQL
CREATE TABLE toto (
id serial NOT NULL,
nom character varying(50),
prenom character varying(50),
age integer
);
--
ALTER TABLE ONLY toto
ADD CONSTRAINT toto_pk PRIMARY KEY (id);
Maintenant le code de la fonction :
CREATE OR REPLACE FUNCTION import_data(nb_lines IN integer)
RETURNS void AS $func$
DECLARE
i integer;
BEGIN
i = 0;
LOOP
INSERT INTO TOTO (NOM, PRENOM, AGE)
values ('toto'||i,'titi'||i, mod(i,90));
i=i+1;
EXIT WHEN i = nb_lines;
END LOOP;
END;
$func$ LANGUAGE plpgsql;
On exécute ensuite cette fonction : select import_data(1000000);
Le même exemple sous Mysql :
CREATE TABLE toto (
id int(6) NOT NULL AUTO_INCREMENT,
nom varchar(100) DEFAULT NULL,
prenom varchar(100) DEFAULT NULL,
age int(3) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
delimiter |
DROP PROCEDURE import_data|
CREATE PROCEDURE import_data(max INT)
BEGIN
DECLARE i INT DEFAULT 0;
loading_loop: LOOP
SET i=i+1;
insert into toto (nom, prenom, age)
values (concat('toto',i),concat('titi',i), mod(i,90));
IF i=max THEN
LEAVE loading_loop;
END IF;
END LOOP loading_loop;
END
|
delimiter ;
Références :
Documentation PostgreSQL
Documentation Mysql
bases de données , code , oracle , tuto
This work is licensed under a Creative Commons Attribution 3.0 Unported License
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.