Criar UDFs - ajuda
Olá a todos,
Estou criando uma dll com funcoes para usar no firebird (UDF).
Estou utilizando o c# dot.net para criar a dll.
Dll: UDFFireBird.dll
Segue abaixo:
using System;
using System.Collections.Generic;
using System.Text;
namespace UDFFireBird
{
public static class FireBird
{
public static string StrZero(int wvar, int wtam)
{
string wtmp = wvar.ToString();
for (int i = 0; i < wtam - wvar.ToString().Length; i++)
{
wtmp = 0 + wtmp;
}
return wtmp;
}
public static string Replicate(string wchar, int wtam)
{
string wtmp = ;
for (int i = 0; i < wtam; i++)
{
wtmp = wtmp + wchar;
}
return wtmp;
}
}
}
DECLARE EXTERNAL FUNCTION StrZero
INTEGER, INTEGER
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT FireBird.StrZero MODULE_NAME UDFFireBird;
DECLARE EXTERNAL FUNCTION Replicate
char(1), INTEGER
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT FireBird.Replicate MODULE_NAME UDFFireBird;
Estou usando assim:
Select Codigo, Descricao || replicate(.,10)
From CadCat
Erro:
Invalid token.
invalid request BLR at offset 75.
function REPLICATE is not defined.
module name or entrypoint could not be found.
O que está errado ?
O MODULE_NAME UDFFireBird ?
O ENTRY_POINT FireBird.Replicate ?
Por favor, alguma ajuda ?
Obrigado
Estou criando uma dll com funcoes para usar no firebird (UDF).
Estou utilizando o c# dot.net para criar a dll.
Dll: UDFFireBird.dll
Segue abaixo:
using System;
using System.Collections.Generic;
using System.Text;
namespace UDFFireBird
{
public static class FireBird
{
public static string StrZero(int wvar, int wtam)
{
string wtmp = wvar.ToString();
for (int i = 0; i < wtam - wvar.ToString().Length; i++)
{
wtmp = 0 + wtmp;
}
return wtmp;
}
public static string Replicate(string wchar, int wtam)
{
string wtmp = ;
for (int i = 0; i < wtam; i++)
{
wtmp = wtmp + wchar;
}
return wtmp;
}
}
}
DECLARE EXTERNAL FUNCTION StrZero
INTEGER, INTEGER
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT FireBird.StrZero MODULE_NAME UDFFireBird;
DECLARE EXTERNAL FUNCTION Replicate
char(1), INTEGER
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT FireBird.Replicate MODULE_NAME UDFFireBird;
Estou usando assim:
Select Codigo, Descricao || replicate(.,10)
From CadCat
Erro:
Invalid token.
invalid request BLR at offset 75.
function REPLICATE is not defined.
module name or entrypoint could not be found.
O que está errado ?
O MODULE_NAME UDFFireBird ?
O ENTRY_POINT FireBird.Replicate ?
Por favor, alguma ajuda ?
Obrigado
Angelo Zagatti
Curtidas 0
Respostas
Emerson Nascimento
20/04/2012
creio que o entrypoint deva ser somente o nome da função.
ENTRY_POINT FireBird.Replicate => ENTRY_POINT Replicate
ENTRY_POINT FireBird.Replicate => ENTRY_POINT Replicate
GOSTEI 0
Angelo Zagatti
20/04/2012
Emerson,
Já tentei assim tambem, mas nao deu certo.
Nao tenho muinta certeza ainda, mas pelo que vi na net, nao é possivel fazer uma dll em c# para usar como UDF no firebird.
Se algum tiver alguma confirmaçao, por favor relatar.
Obrigado
Já tentei assim tambem, mas nao deu certo.
Nao tenho muinta certeza ainda, mas pelo que vi na net, nao é possivel fazer uma dll em c# para usar como UDF no firebird.
Se algum tiver alguma confirmaçao, por favor relatar.
Obrigado
GOSTEI 0
Deivison Melo
20/04/2012
Já criei UDF´s usando o Delphi!
existem muitos exemplos na net utilizando o Delphi, veja se há possibilidade de adptar para o C# (nunca soube de alguém que fez dll para utilização de funções externas (UDF) em C# ou até mesmo em C/C++ (Que imagino que no firebird seja mais fácil de encontrar em C/C++).
Forte abraço!!
existem muitos exemplos na net utilizando o Delphi, veja se há possibilidade de adptar para o C# (nunca soube de alguém que fez dll para utilização de funções externas (UDF) em C# ou até mesmo em C/C++ (Que imagino que no firebird seja mais fácil de encontrar em C/C++).
Forte abraço!!
GOSTEI 0