Bonjour,

J'essaye de créer une fonction qui prend 2 paramètres entiers et qui incrémente bêtement chacun de ces paramètres (c'est une simple fonction de test qui n'a aucune réelle utilité mais qui me permettrait de généraliser l'utilisation de paramètres INOUT). Mon fonction SQL est la suivante :

CREATE OR REPLACE FUNCTION add_one(INOUT arg1 integer, INOUT arg2 integer)
RETURNS record
AS '$libdir/myDLL.dll', 'add_one'
LANGUAGE 'c' VOLATILE STRICT ;

Dans ma dll j'ai une fonction C add_one dont voici le code :

#include "postgres.h"
#include "fmgr.h"
void add_one(int arg1, int arg2)
{
arg1 = arg1 + 1 ;
arg2 = arg2 + 1 ;
}

Lorsque j'essaye d'exécuter ma fonction (select * from add_one(10, 20)), mon serveur Postgres plante avec comme message d'erreur 'ERROR' (très significatif ...).
A noter que lorsque j'utilise un seul paramètre (INOUT), tout se passe correctement; et si je code tout en sql, tout se passe correctement également. Le problème, c'est que j'ai vraiment besoin de comprendre l'utilisation des paramètres INOUT combinées à des fonctions C.

Qqn aurait une idée ?
Merci.

Ps : Pour information, je travaille avec PostgreSQL 8.3.6 et Visual Studio 2008 Professional Edition.