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 :

Problème de type chaîne


Sujet :

PostgreSQL

  1. #1
    Membre habitué Avatar de champijulie
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 131
    Points
    131
    Par défaut Problème de type chaîne
    Kikou,

    je dispose de la version 8.0 de postgres et je l'utilise pr l'intermédiaire de pgAdmin3. J'ai écrit une petite fonction en pgsql. Malheureusement elle ne fonctionne pas car le type varchar n'est pas reconnu. Je vous donne donc le corps de la fonction pour que vous puissiez me dire le pourquoi du comment.

    Create or replace function lire_erreur (integer) return varchar AS'
    DECLARE
    p_num ALIAS FOR $1;
    libelle varchar(160);
    num integer;
    BEGIN
    SELECT count(*) INTO num FROM erreur WHERE id_erreur=p_num;
    IF FOUND THEN
    SELECT id_erreur||'':''||libelle
    Into libelle
    From erreur
    Where id_erreur = p_num;
    ELSE
    libelle := p_num||'':ERREUR INDEFINIE'';
    END IF;
    return(libelle);
    END lire_erreur;

    Merci d'avance de me répondre.
    champijulie

  2. #2
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    A la place de varchar(...) , tu dois mettre text et ca fonctionnera

  3. #3
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    En fait, varchar fonctionne mais il y avait plusieurs choses qui n'allait pas, je t'ai reecris la fonction qui devrais normalement fonctionner :

    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
    Create or replace function lire_erreur (integer) returns varchar AS
    $BODY$
    DECLARE
     p_num ALIAS FOR $1;
     libelle varchar(160);
     num integer;
    BEGIN
     SELECT INTO num count(*) FROM erreur WHERE id_erreur=p_num;
     IF FOUND THEN
      SELECT INTO libelle id_erreur||':'||libelle From erreur Where id_erreur = p_num;
     ELSE
      libelle := p_num||':ERREUR INDEFINIE';
     END IF;
     return libelle;
    END; 
    $BODY$
    LANGUAGE 'plpgsql' VOLATILE;
    - Le return de la declaration --> il manquait un s a la fin --> returns
    - il faut intervertir le INTO dans le select
    - il n'y a pas de parentheses apres return dans la procedure (return libelle)
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

  4. #4
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    J'ai mis aussi la fonction entre $body$ pour eviter de dedoubler tout les quotes
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

  5. #5
    Membre habitué Avatar de champijulie
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 131
    Points
    131
    Par défaut
    Merci beaucoup de m'avoir répondu.
    Je teste ça demain.
    Ca va me permettre de pas mal avancer.

    champijulie

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

Discussions similaires

  1. [OCILIB] Problème de TYPE de chaîne de caractères
    Par mustapha.ezzaouia dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 04/04/2012, 14h22
  2. Réponses: 10
    Dernier message: 13/01/2009, 11h28
  3. Problème de conversion d'un type chaîne en type double
    Par Antonin08 dans le forum Windows
    Réponses: 5
    Dernier message: 17/10/2008, 14h17
  4. [Sybase] Problème de type sous ASE
    Par Hotchotte dans le forum Sybase
    Réponses: 1
    Dernier message: 18/12/2004, 11h04
  5. Réponses: 2
    Dernier message: 18/10/2003, 14h42

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