Não consigo usar minha UDF

Firebird

31/01/2006

estou estudando UDF´s, por isso criei uma UDF bem facil e trivial, chamada copia que é igual a função copy do delphi.

ao tentar executar a função no sql

select copia(razao, 1, 6) from clientes


dá o erro

Access to UDF library ´pFuncoesFB.DLL´ is denied by server administrator Statement: select copia(razao, 1, 6) from clientes



o que eu fiz de errado?


Vitor Rubio

Vitor Rubio

Curtidas 0

Respostas

Thomaz_prg

Thomaz_prg

31/01/2006

Tente passar privilégios para a UDF (Grant).


GOSTEI 0
Vitor Rubio

Vitor Rubio

31/01/2006

Não faço idéia de como se faz isso, mas eu coloquei minha dll na pasta UDF do firebird e funcionou. Queria fazer funcionar em outro diretorio, mas eu coloquei no firebird.conf a configuração:

UdfAccess = restrict <minha pasta>
ou então
UdfAccess = full

e não funcionou, nenhum dos dois jeitos.
fiz uma função que funcionou legal:

function copia(Str: PChar; var Indice, contador: integer): PChar; cdecl; export;
begin
  Result := Str;
  StrPCopy(Str, Copy(Str, indice, contador));
end;


mas a outra não consegui fazer funcionar de jeito nenhum:

function iif(var expressao: integer; var SeVerdadeiro, SeFalso: integer): integer; cdecl; export;
begin
  if expressao <> 0 then
    result := SeVerdadeiro
  else
    result := SeFalso;
end;


eu queria passar um integer, se fosse diferente de 0, ele retornaria um primeiro argumento integer, se fosse igual a 0, ele traria um segundo argumento.

desse jeito não funcionou, mas na verdade nem era isso que eu queria fazer, eu queria que o primeiro argumento fosse boolean na verdade, e que eu pudesse passar uma expressão. Tem como?

vlw!


GOSTEI 0
POSTAR