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 :

Trigger appelant une fonction


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut Trigger appelant une fonction
    Bonjour,

    Je suis débutant sous Postgre mais possède une certaine expérience sous Oracle.

    Je dois créer un trigger qui appelle plusieurs fonctions.

    J'ai donc créé une fonction

    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
     
    CREATE OR REPLACE FUNCTION "VERIF_DATE_NAISS"(instance_id integer)
      RETURNS character varying AS
    $BODY$
     
    DECLARE
    	retour character varying;
    	date_naiss date;
    BEGIN
     
    	SELECT val_date into date_naiss from valeur_date where champ_id=27 and inst_id=instance_id;
     
    	IF date_naiss<to_date('01/01/1906', 'dd/mm/yyyy') THEN
    		retour:='AÏE';
    	ELSE
    		retour:='OK';
    	END IF;
     
    	RETURN retour;
     
    END;
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE;

    Création de la fonction OK

    1er problème: Lorsque je souhaite la tester, je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select VERIF_DATE_NAISS(116);
    et je récupère l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ERROR:  function verif_date_naiss(integer) does not exist
    LINE 1: select VERIF_DATE_NAISS(116);
                   ^
    HINT:  No function matches the given name and argument types. You may need to add explicit type casts.
     
    ********** Erreur **********
     
    ERROR: function verif_date_naiss(integer) does not exist
    État SQL :42883
    Astuce : No function matches the given name and argument types. You may need to add explicit type casts.
    Caractère : 8
    2ème problème:

    Lorsque je souhaite créer un trigger qui invoque cette fonction, je ne la vois pas dans la liste des fonctions possibles. Il ne me propose que les "fonction-trigger". Je ne sais pas ce que c'est ni comment ça marche.

    Quelqu'un peut-il m'expliquer ?

    Merci
    Cordialement,
    "Patience et longueur de temps font plus que force ni que rage ..."

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Bonjour
    Je crois qu'il vaut mieux écrire tes noms de tables, procédures, triggers ... en minuscules plutôt qu'en majuscules. Sinon, il faut utiliser les guillemets car il te transforme VERIF_DATE_NAISS en verif_date_naiss, comme tu peux le voir dans le message d'erreur.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut
    OK, le 1er problème est résolu.
    En renommant la fonction en minuscule, j'ai bien pu l'exécuter...

    En revanche, mon 2ème problème subsiste:

    Lorsque je souhaite créer un trigger qui invoque cette fonction, je ne la vois pas dans la liste des fonctions possibles. Il ne me propose que les "fonction-trigger". Je ne sais pas ce que c'est ni comment ça marche.

    Quelqu'un peut-il m'expliquer ?

    Merci
    Cordialement,
    "Patience et longueur de temps font plus que force ni que rage ..."

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut
    personne ???
    "Patience et longueur de temps font plus que force ni que rage ..."

Discussions similaires

  1. appeler une fonction connaissant son nom (en string)
    Par Guigui_ dans le forum Général Python
    Réponses: 1
    Dernier message: 20/07/2004, 00h46
  2. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30
  3. Appeler une fonction avec "action" ds un
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 20/04/2004, 14h54
  4. [JSP] Appeler une fonction
    Par Patrick95 dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 23/12/2003, 13h44
  5. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48

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