At 07:31 a.m. 8/08/2015, 'stwizard' [email protected] [firebird-support] wrote:
>Correction:
>
> 
>
>I met to say I then installed FreeAdhocUDF not FreeUDFLib library.

You said:
>I verified that the function is defined with the following:
>
>select * from rdb$functions where upper(rdb$function_name) = 'F_STRINGLENGTH'
>
>
>It return one record with the following values:
>
>RDB$FUNCTION_NAME: F_STRINGLENGTH
>
>RDB$FUNCTION_TYPE: 0
>
>RDB$QUERY_NAME: <Empty String>
>
>RDB$DESCRIPTION: <null>
>
>RDB$MODULE_NAME: FreeUDFLib
>
>RDB$ENTRYPOINT: StringLength
>
>RDB$RETURN_ARGUMENT: 0
>
>RDB$SYSTEM_FLAG: 0

Your declaration is pointing to a module FreeUDFLib.  The library you have is 
FreeAdHocUDF.

So when you say you "installed" FreeAdhocUDF, what did you do, actually?

>And according to their website I also install the 4 icu*44FAU.dll files to the 
>Bin folder.
>
>http://freeadhocudf.org/documentation_english/dok_eng_icu.html

Yeah, maybe.  I can't say whether or not this is a good idea.  But it shouldn't 
account for the "module name or entrypoint not found".  On the other hand, 
having a function declaration pointing to a non-existent UDF library is certain 
to cause it.

>I’ve rebooted the computer too, so I’m at a loss 

OK, when you restored your database, all of the old function declarations were 
restored too.  So you need to list out the names of the functions as they are 
declared in the database (print them to a file, because you'll need to refer to 
them) and then drop all of the functions.

Now you want to write a script (or edit the one that probably comes with the 
FreeAdHocUDF library) so that you declare all the functions you want using the 
same function names as you used before with the FreeUDFLib module.  The 
declared function names can be whatever one likes;  in the declaration, the 
entrypoint has to be the function name as exported from the library.  You'll 
need to use the existing names on the database end to avoid breaking things 
like stored procedures, constraints and application code that call them.

Also, put the library dll module into the ..$firebird$\UDF folder.  But, when 
you make your declaration script, don't include the whole pathname for the 
module, only its actual file name, without the ".dll" extension.

Helen



Reply via email to