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 :

Fonctions et déclencheurs dans PgAdmin 3


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Enseignant
    Inscrit en
    Mars 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Points : 16
    Points
    16
    Par défaut Fonctions et déclencheurs dans PgAdmin 3
    Bonjour,

    Je suis nouveau dans l'utilisation de PgAdmin 3 et je cherche un tutoriel sur la création de fonctions et de déclencheurs dans PgAdmin 3.

    Un grand merci

  2. #2
    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
    Salut,

    Pour créer une fonction avec pgadmin :

    tu cliques avec le bouton droit sur "Fonctions"/"Ajouter une fonction".
    - Définie un nom pour ta fonction, (on va faire ça avec un exemple !!) par exemple "helloworld".
    - Dans type renvoyé choisi un type () dans notre exemple "text".
    - Dans langage choisi plpgsql
    - Dernière étape, dans la partie "Définition". Tu entres le nom et le type de la variable que tu veux en entré. Dans notre exemple tu écris dans la zone à côté du bouton "supprimer" le mot "monnom" et juste au dessus "text". Enfin, tu entres le script que tu veux exécuter. Dans notre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    declare
        resultat text;
    begin
        resultat := 'bonjour ' || monnom;
        return resultat;
    end;
    Tu cliques sur OK et c'est bon.

    Dans ta barre d'outils, tu as un bouton avec le mot "SQL". tu cliques dessus et tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select "monschema".helloworld('bartounet');
    Si tu n'utilises pas de schéma, retire ce qui est entre parenthèses.

    Si tu exécutes ce scripts, pg te renvoie "bonjour bartounet".

    J'espère que j'ai rien oublié !!!

    A+

  3. #3
    Membre habitué Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Points : 168
    Points
    168
    Par défaut
    Salut !

    J'ai créé la fonction comme tu l'as expliqué dans le schema public, ce qui me donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    -- Function: "TestFunc"(nom text)
     
    -- DROP FUNCTION "TestFunc"(nom text);
     
    CREATE OR REPLACE FUNCTION "TestFunc"(nom text)
      RETURNS text AS
    $BODY$declare
        resultat text;
    begin
        resultat := 'bonjour ' || nom;
        RETURN resultat;
    end;$BODY$
      LANGUAGE 'plpgsql' VOLATILE;
    ALTER FUNCTION "TestFunc"(nom text) OWNER TO postgres;
    Mais lorsque j'execute le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TestFunc('Davboc');
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT public.TestFunc('Davboc');
    J'ai une erreur :
    Astuce : No function matches the given name and argument types. You may need to add explicit type casts.
    Caractère : 8
    Savez-vous pourquoi ? J'ai refait la fonction plusieurs fois sans succès

  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
    Essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT "TestFunc"('Davboc'); -- TestFunc est entre guillemets
    En fait, lorsque tu mets des majuscules à un nom de table ou de fonction, celle ci sera appelée en mettant des guillemets. Je te conseille de modifier ta fonction par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     -- Function: "TestFunc"(nom text)
     
    -- DROP FUNCTION "TestFunc"(nom text);
     
    CREATE OR REPLACE FUNCTION testfunc(nom text)
      RETURNS text AS
    $BODY$declare
        resultat text;
    begin
        resultat := 'bonjour ' || nom;
        RETURN resultat;
    end;$BODY$
      LANGUAGE 'plpgsql' VOLATILE;
    ALTER FUNCTION testfunc(nom text) OWNER TO postgres;
    A+

  5. #5
    Membre habitué Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Points : 168
    Points
    168
    Par défaut
    Exact ! Ca marche si je met les guillemets ou sans si je met le nom en minuscule

    Merci !

Discussions similaires

  1. Variable qui évolue en fonction des choix dans formulaire
    Par stefou007 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/09/2005, 22h40
  2. fonction équivalente à la fonction MOD (oracle) dans ms-sql
    Par rodrigue50 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/07/2005, 16h14
  3. Réponses: 5
    Dernier message: 06/05/2005, 19h10
  4. [C#] balise <a> en fonction d'infos dans l
    Par Pierrre dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/08/2004, 12h40
  5. Réponses: 12
    Dernier message: 14/06/2004, 13h06

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