[firebase-br] Erro ao executar UDF

Carlos H. Cantu listas em warmboot.com.br
Sexta Maio 13 00:40:30 -03 2022


Escrever UDFs para o Firebird exige seguir uma série de regras, principalmente 
quando envolve parametros ou retornos de strings.

Sugiro que leia o meu artigo em https://www.firebase.com.br/artigo.php?id=3208 e 
siga tudo que está ali. 

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 4 - www.firebase.com.br/guiafb4.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

CAvl> Escrevi uma UDF em freepascal para fazer a captura de informações em campos
CAvl> varchar contendo json. Gerei a .dll (fb_json.dll) e coloquei ela na pasta
CAvl> UDF do firebird.

CAvl> O problema é que quando tento executar uma chamada a função o firebird
CAvl> retorna o erro:

SQL>> select json_value('{"nome":"clayton"}', 'nome') from rdb$database;



CAvl> *Statement failed, SQLSTATE = 39000invalid request BLR at offset
CAvl> 39-function JSON_VALUE is not defined-module name or entrypoint could not
CAvl> be found*

CAvl> Pesquisando na internet vi algumas postagens relatando sobre esse erro,
CAvl> porém nenhuma das sugestões resultaram em sucesso.

CAvl> Já instalei a dll em várias pastas (firebird/bin, system32, firebird/udf).

CAvl> Já configurei o firebird com "UdfAccess = Full", restartei o serviço e etc.

CAvl> Tentei inclusive utilizar as UDFs que já vem com o Firebird, porém elas
CAvl> resultam no mesmo erro.

CAvl> Testei o carregamento da dll utilizando python e a chamada a função
CAvl> funciona perfeitamente.

CAvl> Para declarar a função, utilizei a seguinte instrução:

CAvl> DECLARE EXTERNAL FUNCTION JSON_VALUE
CAvl> CString(2048)
CAvl> RETURNS CString(2048) FREE_IT
CAvl> ENTRY_POINT 'JSON_VALUE' MODULE_NAME 'fb_json';

CAvl> Alguém já passou por isso e teria uma idéia de como posso resolver ?

CAvl> Versão do Firebird = 2.5.8
CAvl> Versão do Windows = 7
CAvl> Plataforma 32 bits
CAvl> DLL compilada para 32 bits.

CAvl> ---

CAvl> Clayton A. Alves <http://claytonaalves.github.com>

CAvl>  claytonaalves <https://telegram.me/claytonaalves>
CAvl>  +55 66 99233-3406

CAvl> ---
CAvl> ______________________________________________
CAvl> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
CAvl> Para saber como gerenciar/excluir seu cadastro na lista, use:
CAvl> http://www.firebase.com.br/fb/artigo.php?id=1107
CAvl> Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html




Mais detalhes sobre a lista de discussão lista