Précédent   Forum du club des développeurs et IT Pro > Bases de données > PostgreSQL > Extensions
Extensions Forum d'entraide sur les plugins d'extension de PostgreSQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 15/04/2009, 10h01   #1
O Oøps O
Invité de passage
 
Inscription : avril 2009
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 22
Points : 2
Points : 2
Par défaut Extension procédure stockée externe

Voila je suis actuellement stagiaire dans une entreprise et étant donner le fait que PostGre ne contient pas la clause GOTO je cherche à esquiver ce problème en me servant du langage C qui lui possède cette instruction. Pour cela, j'ai créer une fonction externe :

PG_FUNCTION_INFO_V1(Test);

PGMODULEEXPORT Datum Test(PG_FUNCTION_ARGS)
{
EXEC SQL BEGIN DECLARE SECTION;
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO tcp:postgresql://localhost/Test USER admini USING admini;
EXEC SQL WHENEVER SQLERROR SQLPRINT;
EXEC SQL INSERT INTO animal(nom) VALUES ('loup');
EXEC SQL COMMIT;
PG_RETURN_INT32(1);
}

Cette fonction externe mélange du Embedded/SQL avec du C, une fois passé par le préprocesseur ECPG pour traduire les instructions E/SQL,je la convertis sous la forme d'une dll que je déclare grâce à cette instruction à Postgre :

CREATE OR REPLACE FUNCTION fn_externe()
RETURNS integer AS
'C:/Program Files/PostgreSQL/8.3/Mesfonctions/madll', 'Test'
LANGUAGE 'c' VOLATILE STRICT

Ma procédure externe fonctionne à merveille et insère bien ma ligne cependant, j'ai un soucis au niveau de la connexion. En effet, j'utilise la commande E/SQL CONNECT or une connexion est très couteux au niveau du temps d'exécution de ma procédure. Etant donner qu'elle se situe avec mes autres procédures en PL/pgSQL, je devrais pouvoir me passer d'une connexion et utiliser la connexion courante lors de l'appel de ma procédure externe. Malheureusement, je ne sais pas comment faire. Si quelqu'un le sait je lui serais très reconnaissant de bien vouloir me transmettre la solution. Merci d'avance
O Oøps O est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h28.


 
 
 
 
Partenaires

Hébergement Web