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 12/05/2005, 17h27   #1
Membre régulier
 
Avatar de champijulie
 
Inscription : mai 2005
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 147
Points : 92
Points : 92
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
champijulie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2005, 17h43   #2
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
A la place de varchar(...) , tu dois mettre text et ca fonctionnera
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2005, 18h56   #3
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
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 :
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)
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2005, 18h57   #4
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
J'ai mis aussi la fonction entre $body$ pour eviter de dedoubler tout les quotes
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2005, 20h23   #5
Membre régulier
 
Avatar de champijulie
 
Inscription : mai 2005
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 147
Points : 92
Points : 92
Merci beaucoup de m'avoir répondu.
Je teste ça demain.
Ca va me permettre de pas mal avancer.

champijulie
champijulie 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 03h42.


 
 
 
 
Partenaires

Hébergement Web