J'ai lu avec intérêt aujourd'hui un article décrivant Postgres en tant que système de base de données relationnelle-objet. Était évoquée notamment une fonctionnalité que je ne connaissais pas: une fonction sur une table peut être appelée directement sur la table via un '.' au lieu d'avoir à utiliser l'appel usuel avec parenthèses. Démonstration:
create table resultats( equipe text not null, victoires integer not null, nuls integer not null, defaites integer not null); insert into resultats values('Troyes', 3, 0, 1); insert into resultats values('Sète', 1, 2, 0); create function total(resultats) returns integer as $$ select $1.victoires + $1.nuls + $1.defaites; $$ language sql; create function points(resultats) returns integer as $$ select $1.victoires * 3 + $1.nuls * 2 + $1.defaites; $$ language sql;
Si l'on veut visualiser le nombre total de matchs et les points de chaque équipe, l'on peut utiliser la requête suivante:
select r.equipe, total(r), points(r) from resultats r;
Mais il est également possible de l'écrire comme ça:
select r.equipe, r.total, r.points from resultats r;
En dehors de l'aspect purement syntactique de la chose, c'est aussi une manière de considérer les fonctions total et points comme étant des méthodes sur la classe resultats.
Aucun commentaire:
Enregistrer un commentaire