PDA

Ver la Versión Completa : Libreria de UDF para interbase


chutipascal
26-06-2003, 12:56:26
Hola.
Hace tiempo que me viene rondando en el coco que podriamos crear, entre los que quieran participar, una libreria de udfs con funcionalidades que hemos necesitado en interbase como por ejemplo este caso:
http://www.clubdelphi.com/foros/showthread.php?s=&threadid=1623
La verdad nunca he tenido la necesidad de definir alguna (siempre he usado algún truquito) porque el tiempo siempre me apremia.
¡Pero se como empezar!
---> leyendo las documentaciones!.

Para empezar estas funciones puede ser util :

* nvl(x) para transformar los nullos en ceros.
* IsEqual(x, y) Devuelve 1 si y es igual a x y 0 si no lo es.


¿Alguna idea más?
¿Alguien se quiere apuntar?
¿Como lo hacemos?
¿alguno tiene codigo para compartir?
etc...

Un saludo.

jachguate
26-06-2003, 14:13:00
Si alguien conoce la función Decode de Oracle... seguramente la extrañará en Interbase... aunque no creo que sea fácil implementarla.

Con la función decode practicamente metés un Case dentro de tu SQL.

a ver si me explico con un ejemplo:

En oracle vos podes hacer algo como:


Select to_number(to_char(sysdate, 'MM')) mes, decode(mes,
1, 'Enero', 2, 'Febrero', 3, 'Marzo', 4, 'Abril', 5, 'Mayo', 6, 'Junio',
7, 'Julio', '8', 'Agosto', 9, 'Septiembre', 10, 'Octubre', 11, 'Noviembre', 12, 'Diciembre') NombreMes
from dual;


y la función te devolveria algo como:


Mes NombreMes
--- ------------
6 Junio


ya se que se puede definir una función que se llame NombreMes y todo resuelto... pero este es un ejemplo trivial.

Realmente permite hacer cosas maravillosas... con poco esfuerzo. Yo he tenido que hacer stored procedures que devuelven un dataset en interbase para conseguir el mismo resultado que podria conseguir en oracle en 5 minutos, inviertiendo incluso horas....

Por cierto... también las rutinas para convertir entre tipos.... digamos:

to_number('1580');
To_Char(SysDate, 'dd/mm/yyyy');
to_char(1580, '9,999,990.00');

Etc.

hasta luego.

;)

kinobi
26-06-2003, 23:40:09
Hola,

Posteado originalmente por chutipascal
¿Como lo hacemos?

yo empezaría por revisar qué otras bibliotecas de UDF's existen para no duplicar trabajo (*) innecesariamente. Aquí van unas cuantas direcciones desde las que se pueden descargar algunas de estas bibliotecas:

1. FUDLibrary (http://www.griffon.demon.co.uk/fudlibrary.html) - Más de 60 funciones de todo tipo - Licencia GPL

2. BLOBOudfLib (http://www.apostasynow.com/blobudflib/) - Funciones para BLOB's - Licencia similar a MPL

3. IFUDF, TBUDF, CPFUDF (http://www.ulbrajp.com.br/~tecnobyte/) - Más de 100 funciones de todo tipo - Open Source

4. rFunc (http://members.fortunecity.com/polarissoft/Products/rFunc/rfunc.html) - Más de 90 funciones de todo tipo - Licencia LGPL

5. fpc_udf (http://home.t-online.de/home/schlottmann-goedde/eddy.htm) - Varias funciones (para Free Pascal) - Open Source

Incluso cabría la posibilidad de no empezar un nuevo proyecto, sino colaborar con alguno de los anteriores.

Saludos.

(*) Entiendo que se está proponiendo un proyecto Open Source, ¿es así?

chutipascal
28-06-2003, 14:28:33
Gracias Kinobi, estoy encantado. no sabia que habia tantas udf en el dominio publico, creo que lo más acertado en este caso es participar en uno de esos desarrollos.