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 :

Debut en PL/PGSQL : Problemes


Sujet :

PostgreSQL

  1. #1
    Membre chevronné
    Avatar de kedare
    Homme Profil pro
    Network Automation Engineer
    Inscrit en
    Juillet 2005
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Network Automation Engineer

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 548
    Points : 1 861
    Points
    1 861
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  2. #2
    Membre averti

    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 338
    Points : 404
    Points
    404
    Par défaut
    tout simplement mettre un ; derrière RETURN TRUE; et RETURN FALSE;
    Christophe Chauvet
    Consultant Odoo
    Python / PostgreSQL

  3. #3
    Membre chevronné
    Avatar de kedare
    Homme Profil pro
    Network Automation Engineer
    Inscrit en
    Juillet 2005
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Network Automation Engineer

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 548
    Points : 1 861
    Points
    1 861
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ERROR:  operator does not exist: text == character varying
    LIGNE 1 : SELECT  md5( $1 ) ==  $2

  4. #4
    Membre habitué Avatar de budtucker
    Profil pro
    Développeur multimédia
    Inscrit en
    Avril 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Avril 2007
    Messages : 176
    Points : 197
    Points
    197
    Par défaut
    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 :
    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 :
    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éé.
    Sud04

Discussions similaires

  1. [DEBUTANT][VSC++ 6.0]probleme de compilation
    Par magnus2005 dans le forum Visual C++
    Réponses: 6
    Dernier message: 27/02/2007, 09h01
  2. Newbie PgSQL->Probleme Creation de table avec FOREIGN KEY
    Par ralkif dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 07/03/2006, 21h59
  3. [debutant] signé un Japplet ! probleme :(
    Par daed dans le forum Applets
    Réponses: 3
    Dernier message: 06/03/2006, 18h53
  4. [debutant][db2] timestamp format problem
    Par mlequim dans le forum DB2
    Réponses: 2
    Dernier message: 21/07/2005, 08h33
  5. [Language][debutant] package et import : probleme
    Par debdev dans le forum Langage
    Réponses: 11
    Dernier message: 15/03/2005, 12h29

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