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 16/04/2007, 12h14   #1
Invité de passage
 
Enseignant
Inscription : mars 2007
Messages : 16
Détails du profil
Informations personnelles :
Âge : 37

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : mars 2007
Messages : 16
Points : 1
Points : 1
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
bartounet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 13h21   #2
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
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 :
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 :
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+
budtucker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 14h17   #3
Membre habitué
 
Avatar de Davboc
 
Inscription : novembre 2005
Messages : 266
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : novembre 2005
Messages : 266
Points : 139
Points : 139
Salut !

J'ai créé la fonction comme tu l'as expliqué dans le schema public, ce qui me donne ceci :
Code :
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 :
SELECT TestFunc('Davboc');
ou bien

Code :
SELECT public.TestFunc('Davboc');
J'ai une erreur :
Citation:
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
Davboc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 14h42   #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
Essaie avec
Code :
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 :
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+
budtucker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 15h06   #5
Membre habitué
 
Avatar de Davboc
 
Inscription : novembre 2005
Messages : 266
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : novembre 2005
Messages : 266
Points : 139
Points : 139
Exact ! Ca marche si je met les guillemets ou sans si je met le nom en minuscule

Merci !
Davboc 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 02h47.


 
 
 
 
Partenaires

Hébergement Web