Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/11/2007, 14h31   #1
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
Par défaut gestion des messages d'erreur dans un procédure stockée

Bonjour,

Je fais une requête pour trouver la localisation d'une adresse ip. Je n'ai aucun problème avec cette requête :

par exemple ip : 82.236.253.111

Code :
SELECT geoip_country FROM geoip WHERE (16777216*82 + 65536*236 + 256*253 + 111) BETWEEN geoip_begin_num AND geoip_end_num
Le problème surgit si l'adresse IP vient d'un réseau privé. Dans ce cas j'ai un message d'erreur :

Code :
Error : integer out of range
Aujourd'hui je ne sais pas comme outrepasser ce message d'erreur et surtout faire en sorte que cela ne stoppe pas ma procédure stockée.

j'aimerai gérer ce message d'erreur et mettre une valeur spécifique dans ma colonne ip_pays dans le cas où la localisation n'aboutit pas.

merci de m'expliquer si vous le pouvez comment gérer cela

merci à tous !
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 14h41   #2
Membre habitué
 
Inscription : août 2007
Messages : 128
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 128
Points : 146
Points : 146
Plutôt que de passer par un entier, pourquoi ne pas avoir utilisé les types réseau de PostgreSQL, notamment inet ? Voir http://www.postgresql.org/docs/8.2/i...net-types.html pour les détails sur les types et http://www.postgresql.org/docs/8.2/s...tions-net.html pour les fonctions.

Quant à ta question originelle, regarde du côté des exceptions : http://www.postgresql.org/docs/8.2/s...ERROR-TRAPPING

Ça te permet de récupérer l'erreur et de faire un autre traitement à la place.
gleu_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 14h47   #3
Membre habitué
 
Inscription : mai 2002
Messages : 635
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 635
Points : 109
Points : 109
j'utilise la base de donnée geoip et leur formule de geolocalisation

ipnum = 16777216*w + 65536*x + 256*y + z

ou IP Address = w.x.y.z

que m'apporterait l'utilisation d'inet ?

Cordialement
viny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 19h15   #4
Membre habitué
 
Inscription : août 2007
Messages : 128
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 128
Points : 146
Points : 146
de ne pas t'embêter à faire le calcul vers integer (ou plutôt int8), de pouvoir calculer rapidement réseaux, sous-réseaux, etc.
gleu_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h10.


 
 
 
 
Partenaires

Hébergement Web