IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Fonctions de plpgsql


Sujet :

PostgreSQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 199
    Points : 103
    Points
    103
    Par défaut Fonctions de plpgsql
    Bonjour à tous,

    Voici, j'essaie de construire une application avec postgresql.

    Je cherche à vérifier la saisie d'un numéro Siren.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    DECLARE
    i text ;
    j integer = 1;
     
    BEGIN
     
    -- Vérification que la valeur n'est pas nulle
    	IF nullvalue(Num_Siren) THEN
     		return false;
    	END IF;
    -- Comptage du nombre de chiffre
        IF length(Num_Siren)!=9 THEN
        	return false;
        END IF;
    -- Vérification que chaque caractère est un chiffre
        FOR j IN 1..9 LOOP
           i := substr(Num_Siren,j,1);
           if to_number(i,9) not between 0 AND 9 then
    	   return false;
           end if;
           j := j+1;
        end loop;
     return true;
    END;
    Voic le problème : au débuggage, il me précise que la fonction to_number (text,int) n'existe pas.

    D'où mes questions :

    - Quelle fonction utiliser pour convertir un text en numérique ?
    - Où peut-on trouver la liste des fonctions de plpgsql ?

    Merci par avance pour votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 199
    Points : 103
    Points
    103
    Par défaut
    Autant pour moi, j'ai trouvé. Ce n'était qu'une histoire d'apostrophes autour du 9 soit :


  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 30
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Le prototype de la fonction est : to_number(text, text);
    Il faut donc mettre le seconde paramètre en quote.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF to_number(i,'9') NOT BETWEEN 0 AND 9 then
    Quand à la liste des fonctions de formatage, la doc est très bien faite (pour tout le reste aussi d'ailleurs).

    http://www.postgresql.org/docs/8.1/s...RMATTING-TABLE

    Bonne journée.

    EDIT : Oups

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fonction en plpgsql
    Par 78alex78 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 19/01/2007, 15h23
  2. [MySQL] Appel de fonction plpgsql ou plsql...
    Par Empty_body dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/01/2006, 19h56
  3. Fonction plpgsql
    Par Empty_body dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 30/12/2005, 12h19
  4. [ debutant PLPGSQL ] fonction plpgsql
    Par diableblanc dans le forum PostgreSQL
    Réponses: 12
    Dernier message: 01/06/2005, 13h54
  5. [plpgsql] transaction dans les fonctions ?
    Par hpghost dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/06/2004, 17h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo