Bonjour.

j'ai quelques problèmes pour mettre en oeuvre une fonction UDF.

Ecrite en C j'ai crée une dll que j'ai placé dans un répertoire D:\firebird15BDD de mon disque dur .

Ci joint la fonction C écrite :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
short __stdcall SgbdUdfTestBit( short s_MotATester, short s_Position)
{
	return ( (s_MotATester & s_Position) != 0 );	
}
J'ai déclaré la fonction dans ma base de données en utilisant un script SQL sous IBEXPERT comme suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
DECLARE EXTERNAL FUNCTION SGBDTESTBIT
    SMALLINT,
    SMALLINT
RETURNS SMALLINT BY VALUE
ENTRY_POINT 'SgbdUdfTestBit' MODULE_NAME 'D:\Firebird15bdd\SgbdUdf.dll'
J'appelle ma fonction dans une procedure stockée comme suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_restest = sgbdtestbit(:droitscumules,:var_position_droits);
Au moment du Commit de la procédure stockée j'obtiens le message d'erreur suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Invalid token
Invalid request BLR at offset 418
function SGBDTESTBIT is not defined
module name or entrypoint could not be founded
.

Pouvez vous m'aider à trouver ce qui manque à la reconnaissance de ma fonction ?