Ver Mensaje Individual
  #3  
Antiguo 06-09-2007
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Reputación: 21
defcon1_es Va por buen camino
Cita:
Empezado por sitrico Ver Mensaje
Código SQL [-]
CREATE PROCEDURE APLICAR_FORMULA_MAGICA(IdFormula integer)
as
declare variable FORMULASQL BLOB SUBTYPE 0;-- TEXTO
begin
  -- primero leer la formula SQL
  FOR Select  FORMULASQL FROM FORMULAS WHERE IDFORMULA = :IdFormula 
  Into :FORMULASQL --CAMPO MEMO
  DO BEGIN
     -- Aqui se podria asignar el codigo SQL almacenado en FORMULASQL
     -- a "Algo" y luego ejecutar dichas sentencias para arrojar como resultado
     -- el valor de la formula???  
     suspend;
  End
end
Claro todo desde dentro de firebird (2.0.1) con procedimientos almacenados y eso, la intención es permitir al usuario ejecutar algunos cálculos especiales que arrojen resultados dentro de otras consultas.

En resumidas: ¿ Se puede almacenar y ejecutar codigo SQL dentro de campos memo en una base de datos firebird ?
Prueba con EXECUTE STATEMENT

Código SQL [-]
CREATE PROCEDURE APLICAR_FORMULA_MAGICA(IdFormula integer)
as
declare variable FORMULASQL BLOB SUBTYPE 0;-- TEXTO
-- Según el ejemplo, pero debes conocer el tipo de dato al que pertenece.
declare variable ResultadoFormula DOUBLE PRECISION;
begin
  FOR Select  FORMULASQL FROM FORMULAS WHERE IDFORMULA = :IdFormula 
  Into :FORMULASQL
  DO BEGIN
     EXECUTE STATEMENT :FORMULASQL
     INTO :ResultadoFormula; -- si siempre devuelve 1 campo
    -- Operar con ese resultado almacenado en ResultadoFormula
     suspend;
  End
end

Pero el problema está en qué es lo que devuelve esa FORMULA, porque solo con ejecutarla dentro del procedimiento, no creo que sirva de mucho...no se.
¿Esa FORMULA devuelve siempre 1 campo o devuelve más de 1?
¿de que tipo es el dato devuelto?
Me acabo de dar cuenta que la sentencia EXECUTE STATEMENT solo funciona con <string>,
con lo que si falla, (porque no lo he comprobado) deberias pasar de blob a string (creo).
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...

Última edición por defcon1_es fecha: 06-09-2007 a las 11:47:15.
Responder Con Cita