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
Version imprimable
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
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 :
Tu cliques sur OK et c'est bon.Code:
1
2
3
4
5
6
7 declare resultat text; begin resultat := 'bonjour ' || monnom; return resultat; end;
Dans ta barre d'outils, tu as un bouton avec le mot "SQL". tu cliques dessus et tu écris
Si tu n'utilises pas de schéma, retire ce qui est entre parenthèses.Code:select "monschema".helloworld('bartounet');
Si tu exécutes ce scripts, pg te renvoie "bonjour bartounet".
J'espère que j'ai rien oublié !!!
A+
Salut !
J'ai créé la fonction comme tu l'as expliqué dans le schema public, ce qui me donne ceci :
Mais lorsque j'execute le codeCode:
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;
ou bienCode:SELECT TestFunc('Davboc');
J'ai une erreur :Code:SELECT public.TestFunc('Davboc');
Savez-vous pourquoi ? J'ai refait la fonction plusieurs fois sans succèsCitation:
Astuce : No function matches the given name and argument types. You may need to add explicit type casts.
Caractère : 8
Essaie avec
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:SELECT "TestFunc"('Davboc'); -- TestFunc est entre guillemets
A+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;
Exact ! Ca marche si je met les guillemets ou sans si je met le nom en minuscule :king:
Merci !