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 27/06/2007, 00h20   #1
Membre extrêmement actif
 
Avatar de kedare
 
Mathieu
Administrateur systèmes et réseaux
Inscription : juillet 2005
Messages : 1 476
Détails du profil
Informations personnelles :
Nom : Mathieu
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux

Informations forums :
Inscription : juillet 2005
Messages : 1 476
Points : 1 260
Points : 1 260
Par défaut Debut en PL/PGSQL : Problemes

Hello , je debute tout juste en PL/PGSQL ... j'ai essayer de faire ceci pour comparrer les mots de passe :
Code :
1
2
3
4
5
6
7
8
9
10
11
CREATE FUNCTION "public"."check_md5_pass" (pass varchar, crypted_pass varchar) RETURNS BOOLEAN AS
$body$
BEGIN
    IF md5(pass) == crypted_pass THEN
    	RETURN TRUE
    ELSE
    	RETURN FALSE   
    END IF;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
seulement j'ai une erreur :
Code :
1
2
3
ERROR:  syntax error at OR near "ELSE" at character 14
QUERY:  SELECT  TRUE ELSE RETURN FALSE END IF
CONTEXT:  SQL statement IN PL/PgSQL FUNCTION "check_md5_pass" near line 5
que faire ?

si non autre question ... les in/out dans les arguments ca signifie quoi au juste ?
et le SECURITY INVOKER ? (c'est SQL Manager qui m'a generé cette partit , j'ai fait que le body , le reste c'est fais en mode visuel)
kedare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2007, 10h22   #2
Membre éclairé
 
Inscription : janvier 2005
Messages : 336
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2005
Messages : 336
Points : 353
Points : 353
tout simplement mettre un ; derrière RETURN TRUE; et RETURN FALSE;
__________________
Christophe Chauvet (KrysKool)
kryskool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2007, 14h14   #3
Membre extrêmement actif
 
Avatar de kedare
 
Mathieu
Administrateur systèmes et réseaux
Inscription : juillet 2005
Messages : 1 476
Détails du profil
Informations personnelles :
Nom : Mathieu
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux

Informations forums :
Inscription : juillet 2005
Messages : 1 476
Points : 1 260
Points : 1 260
Merci , autre probleme , j'ai l'impression que je n'utilise pas le bon operateur de comparaison pour les VARCHAR ...
voila l'erreur qu'il me met :
Code :
1
2
ERROR:  operator does NOT exist: text == character varying
LIGNE 1 : SELECT  md5( $1 ) ==  $2
kedare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2007, 14h30   #4
Membre actif
 
Avatar de budtucker
 
Développeur multimédia
Inscription : avril 2007
Messages : 175
Détails du profil
Informations professionnelles :
Activité : Développeur multimédia

Informations forums :
Inscription : avril 2007
Messages : 175
Points : 174
Points : 174
Comparaison et affectation :
La comparaison se fait par "=".
Par exemple :
L'affectation se fait par ":=" (comme en Pascal).
IN, OUT, INOUT :
Le in est facultatif. Il permet d'indiquer à ta fonction que la valeur et en entrée.
Réciproquement, le out indique qu'il s'agit d'une valeur en sortie (idéal lorsque l'on a plus d'une valeur à retourner). Pour qu'une variable soit en entrée et sortie, il suffit d'utiliser INOUT.

cf. documentation de PostGreSQL :
Citation:
Les paramètres peuvent être marqués comme IN (par défaut), OUT ou INOUT. Un paramètre INOUT sert à la fois de paramètre en entrée (il fait partie de la liste d'arguments en appel) et comme paramètre de sortie (il fait partie du type d'enregistrement résultat).
SECURITY INVOKER :
re-cf. documentation de PostGreSQL :
Citation:
SECURITY INVOKER indique que la fonction est exécutée avec les droits de l'utilisateur qui l'appelle. C'est la valeur par défaut. SECURITY DEFINER spécifie que la fonction est exécutée avec les droits de l'utilisateur qui l'a créé.
budtucker est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h47.


 
 
 
 
Partenaires

Hébergement Web