Pues ya he hecho mis procedimientos almacenados, ahora me surge la necesidad de una función. En otros motores es con create function y en seguida el código PLSQL, me encontré que hay una parte que se llama UDF pero según veo es para programas externos. ¿Cómo creo funciones en firebird que sean solo PLSQL?
Firebird ¿cómo crear funciones?
Comenzado por
poliburro
, abr 17 2014 10:56
3 respuestas en este tema
#1
Escrito 17 abril 2014 - 10:56
#2
Escrito 18 abril 2014 - 09:48
Esta es quizá la parte mas "aburridora" de Firebird. Primero que todo hay que desarrollar una DLL (en Delphi o en cualquier lenguaje) que exporte las funciones deseadas, supongamos que creamos una DLL de nombre "Test_DLL" que exporta la función "Test_Function" que recibe como parámetro una cadena de texto y devuelve otra, entonces en Firebird creamos la función "FIREBIRD_TEST_FUNCTION" del siguiente modo:
Dicha DLL debería residir en la carpeta de instalación de Firebird.
Personalmente evito hasta donde sea posible el uso de las UDF y en su defecto uso procedimientos almacenados para tal fin.
Si deseas puedes decirnos que quieres lograr con la función y con mucho gusto miramos si se puede lograr con un SP.
Saludos.
PD: Firebird tiene un buen arsenal de funciones listas para usar. Aquí hay una pequeña muestra.
delphi
declare external function FIREBIRD_TEST_FUNCTION cstring(255) returns cstring(255) free_it entry_point 'Test_Function' module_name 'Test_DLL;
Dicha DLL debería residir en la carpeta de instalación de Firebird.
Personalmente evito hasta donde sea posible el uso de las UDF y en su defecto uso procedimientos almacenados para tal fin.
Si deseas puedes decirnos que quieres lograr con la función y con mucho gusto miramos si se puede lograr con un SP.
Saludos.
PD: Firebird tiene un buen arsenal de funciones listas para usar. Aquí hay una pequeña muestra.
#3
Escrito 21 abril 2014 - 09:10
Hola.
Yo utilizo procedimientos almacenados como funciones.
Ejplo.: creamos una función/procedimiento almacenado para formatear números, poniendo ceros delante.
Ahora ya solo queda utilizar esta pseudo-función, y como se ha escrito como un procedimiento almacenado, se tiene que utilizar en forma de subconsulta.
Ejemplo dentro de una consulta :
Yo utilizo procedimientos almacenados como funciones.
Ejplo.: creamos una función/procedimiento almacenado para formatear números, poniendo ceros delante.
delphi
SET TERM ^ ; CREATE procedure "Format" ( NUM integer) returns ( RESULT varchar(20)) as begin RESULT = 10000000000 + NUM; RESULT = substring(RESULT from 2 for 10); suspend; end ^ SET TERM ; ^
Ahora ya solo queda utilizar esta pseudo-función, y como se ha escrito como un procedimiento almacenado, se tiene que utilizar en forma de subconsulta.
Ejemplo dentro de una consulta :
delphi
select CODIGO, (select RESULT from "Format"(CODIGO)) as CODIGO_FORMATEADO, NOMBRE from CLIENTES
#4
Escrito 21 abril 2014 - 10:19
Hola amigo Marc,
Fijate que precisamente debido a que las UDF en firebird como comenta el amigo wilson son para usarse con DLLS decidí usar un procedimiento almacenado con muy buenos resultados.
Gracias por los comentarios.
Fijate que precisamente debido a que las UDF en firebird como comenta el amigo wilson son para usarse con DLLS decidí usar un procedimiento almacenado con muy buenos resultados.
Gracias por los comentarios.