Dans la version 3 de Firebird, une des nouveauté importante c'est l'implémentation des fonctions.
Les fonctions ne remplace pas les UDFs mais viennent combler un vide important dans FirebirdSQL 2.5.2.
par exemple, en créant cette fonction ci-dessous:
CREATE Function fnCamelCase(NAME varchar(255))
returns varchar(255)
as
declare function ICamel(CAMEL_NAME VARCHAR(255), CurrentPosR INT, NextPosR int)
returns varchar(255)
AS
begin
while (position(' ', :CAMEL_NAME, :CurrentPosR) > 0) do begin
NextPosR = position(' ', CAMEL_NAME, CurrentPosR);
CAMEL_NAME = left(:CAMEL_NAME, :NextPosR-1)
|| ' '
|| upper(substring(:CAMEL_NAME from :NextPosR+1 for 1))
|| substring(:CAMEL_NAME from :NextPosR+2 for char_length(CAMEL_NAME));
CurrentPosR = NextPosR+1;
end
return :CAMEL_NAME;
end
begin
NAME = lower(NAME);
NAME = upper(left(NAME, 1)) || substring(:NAME from 2 for char_length(NAME));
return ICamel(NAME,1,0);
end
Vous ne devez plus faire un (select * from <la procédure>) mais vous pouvez appeler directement fnCamelCase('la ligne à modifier') dans vos views, procedures, select et autre.
Vous remarquerez que la déclaration de la fonction ICamel est interne à la function fnCamelCase et est son deuxième format d'appel possible pour FirebirdSQL 3 uniquement et qui, dans notre cas, nous permet de déclarer, d'une manière détourné, des variables interne à notre function.
Autre avantage des functions est l'éventuel remplacement de vos UDFs si difficilement utilisable sur un site partagé.