Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ejecutar formula almacenada en tabla (https://www.clubdelphi.com/foros/showthread.php?t=15922)

mosorio 09-11-2004 18:55:17

Ejecutar formula almacenada en tabla
 
Hola compañeros,
Tengo mis inquietudes con respecto a esto.
Tengo varias formulas almacenadas en una tabla con el mismo nombre FORMULAS, en las cuales las tengo almacenadas para su posterior ejecución y ser implementadas en cualquier momento en la misma BD.

Quisiera que por ejemplo la formula siguiente almacenada sea ejecutada y almacenar el valor en el campo que indica la formula.
El problema de todo o la complicación esta en que necesito hacerlo en la misma BD y no mediante el lenguaje que se que es facil o menos complicado.

Como bien se sabe, en SQL se puede mencionar el campo en cuestion como si fuese un objeto de la tabla, esto para aclarar la formula:

Cita:

Tabla1.Campo1 = Tabla1.Campo2 * (Tabla2.Campo2 / 100)
Esta formula es solo un ejemplo asi como podría ser otra para cálculos de cualquier tipo pero que los valores sean tomados de las tablas existentes si son variables y los valores fijos o constantes asignarlos manualmente o si estos también se encuentran almacenados en una tabla lo mismo.

Lo que no se es si tengo que almacenar toda la estructura de la formula, es decir si para esto tengo que almacenar una select u otro tipo de operación para que esta misma sea ejecutada ya sea por un procedure.
Si paso esto como cadena al procedure, hay alguna forma de que se ejecute, tengo que hacer referencia a la dirección de la variable o parámetro que la contiene??

Gracias de antemano y espero que me ayuden con este tema o me aporten ideas las personas que son expertos en BD ya que esta parte no soy muy experimentado y creo que es algo avanzado, por lo menos para mí.

Había olvidado un detalle importante, uso Firebird 1.5

Neftali [Germán.Estévez] 10-11-2004 09:57:36

Cita:

Empezado por mosorio
...problema de todo o la complicación esta en que necesito hacerlo en la misma BD y no mediante el lenguaje que se que es facil o menos complicado...
...Había olvidado un detalle importante, uso Firebird 1.5...

El tener que hacer lo "en la BD" complica mucho, pero que mucho las cosas, hasta el punto de que no se si va a ser posible implementar la evalución de expresiones en un SP;
La única solución viable que se me ocurre es crearuna UDF (aprovechando que estás usando FB); Una UDF es una función (dentro de una DLL) que puedes crear en un lenguaje de alto nivel (por ejemplo Delphi), de forma que después de instalarla puedes llamarla desde una sentencia SQL.
Se trataría de crear una función de evalución dentro de una UDF y llamarla desde el SQL.

Para crear UDF's en FireBird desde Delphi puedes mirar ésta dirección:

How do I create a UDF in Delphi


Si busca en Internet seguro que encuentras más info.

jzginez 28-06-2007 21:14:38

Hola mosorio, oye estoy intentando hacer lo mismo me podrias comentar como solucionaste tu problema.

Gracias


La franja horaria es GMT +2. Ahora son las 01:38:57.

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