Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Programar STORED PROCEDURES (https://www.clubdelphi.com/foros/showthread.php?t=46224)

papulo 26-07-2007 18:36:43

Programar STORED PROCEDURES
 
Hola gente, me enfrento a un nuevo problema, esta vez relacionado con un STORED PROCEDURE que se activará con un TRIGGER.

Necesito hacer un SP que, pasando un varchar, me lo limpie de carcateres "especiales" (que yo decidiré, pero lo típico, letras con acentos y tal y cual) y me pase a mayúsculas, para después en el campo que decida.

¿Problemas? Pues todos, no he hecho nada de esto nunca, no se con que leguaje se escriben ni nada, así que necesito una pequeña ayudita que me eche a andar y arreando.

Gracias gente.

jhonny 26-07-2007 19:01:49

Puedes hacer una DLL en Delphi con alguna función que exporte y que haga esas cosas que necesitas, para luego ponerla en el FireBird como una UDF y mas tarde podrías hacer uso de ella en tu "Stored Procedure".

Si no me hice entender, avisame, para ver que podemos hacer ;) :D

papulo 27-07-2007 10:56:18

Mas o menos entiendo tu opción, pero quiero programarlos en la DB con el lenguaje que se tenga que usar, para poder utilizarlo siempre que quiera, independientemente del programa que acceda a la DB.

Se que es sencillo hacer dicha función, por ejemploo en PHP la tengo implementada, pero si la hago en la DB, me ahorraré seguir repitiendola con cada lenguaje que utilice, ahí reside la utilidad de la misma.

Ivanzinho 27-07-2007 11:50:43

Cita:

Empezado por papulo
Mas o menos entiendo tu opción, pero quiero programarlos en la DB con el lenguaje que se tenga que usar, para poder utilizarlo siempre que quiera, independientemente del programa que acceda a la DB.

Se que es sencillo hacer dicha función, por ejemploo en PHP la tengo implementada, pero si la hago en la DB, me ahorraré seguir repitiendola con cada lenguaje que utilice, ahí reside la utilidad de la misma.

Las UDF te permiten todo esto que acabas de comentar, lo único que tendrias que hacer es introducirla en la carpeta UDF del directorio firebird del servidor de bases de datos.

papulo 27-07-2007 12:38:44

Pero no quiero usar DELPHI para programar una DLL. Es cuestión de principios, pero quiero saber si hay un leguaje (o varios) para hacerlo directamente, libres y bien documentados preferentemente.

Es una cuestión de dependencia, solo eso.

De todas formas, gracias por las respuestas.

Ivanzinho 27-07-2007 15:34:04

Cita:

Empezado por papulo
Pero no quiero usar DELPHI para programar una DLL. Es cuestión de principios, pero quiero saber si hay un leguaje (o varios) para hacerlo directamente, libres y bien documentados preferentemente.

Es una cuestión de dependencia, solo eso.

De todas formas, gracias por las respuestas.

No se si lo que no quieres es no usar DELPHI o no usar UDF´s. Si lo que no quieres usar es Delphi puedes crear las UDF´s en otros lenguajes, y estas non tienen por que ser .DLL, pueden ser .SO.

Entre los lenguajes que puedes usar está C++, pascal, ... y no tienes que quedarte con las opciones de CodeGear ya que existen muchas otras y libres.

Un saúdo

papulo 27-07-2007 16:05:50

Cita:

Empezado por Ivanzinho
No se si lo que no quieres es no usar DELPHI o no usar UDF´s. Si lo que no quieres usar es Delphi puedes crear las UDF´s en otros lenguajes, y estas non tienen por que ser .DLL, pueden ser .SO.

Entre los lenguajes que puedes usar está C++, pascal, ... y no tienes que quedarte con las opciones de CodeGear ya que existen muchas otras y libres.

Un saúdo

Vale, ahora lo entiendo. ¿Podeis explicar de forma mas extensa, el como hacerlo por ejemplo con PHP? o sino ¿cuales son los lenguajes soportados para ello?
Si las explicaciones son muy tochas, y hay algun/os sitio donde lo expliquen bien, tanto en castellano como en inglés, decidme donde que yo me pongo al ajo y dejo de daros la brasa.

Gracias por la atención.

jhonny 27-07-2007 17:00:37

Si haces la Dll en lenguaje que sea, podrás usarla por ejemplo en una consulta asi:

Código SQL [-]
 
select MatarCaracteresExtranos(:Campo) from TablaConDichoCampo

o en un procedure asi:

Código SQL [-]
 
CampoSinCaracteresRaros = MatarCaracteresExtranos(:Campo);

Esa consulta podrás ejecutarla desde php o lo que sea, ya que el motor es quien hará uso de dicha DLL independientemente de quien la este ejecutando.

Ivanzinho 27-07-2007 17:13:42

Revisa esto. Aquí explican como crear una UDF en C/C++ para windows y para linux, y como declararla posteriormente en firebird. Una vez declarada para usarla posteriormente solo tendras que llamarla desde un procedimiento almacenado, un trigger o una consulta, y pasarle los parametros correspondientes.

Aunque el ejemplo esta en C/C++ puedes utilizar cualquier otro lenguaje capaz de generar bibliotecas de funciones(DLL en windows y SO en linux), para lo cual creo que PHP no vale. Si deseas hacerlo en FreePascal puedo pasarte alguna de las que tengo yo hechas en Delphi, por si te sirve de ejemplo.

Si tienes alguna duda más aquí estaré para ayudarte en lo que pueda.

Un saúdo.

papulo 27-07-2007 17:49:56

Mientras esperaba una respuesta, he visto que puedo usar Lazarus para programar los UDFs, por lo que aceptaré de buena gana esos ejemplos para ver como funciona e irme haciendo a la idea.

Voy a leer el enlace ahora y a ver que sale.

Un saludo.

EDITO: Justo ese documento lo he encontrado mientras buscaba respuestas por google. :P


La franja horaria es GMT +2. Ahora son las 07:49:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi