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)
-   -   array en Firebird (https://www.clubdelphi.com/foros/showthread.php?t=81568)

NizamUlMUlk 25-11-2012 20:24:56

array en Firebird
 
Buenas tardes foro.
Mi consulta es si se puede definir un array en firebird. La idea es pasar un parámetro array del cual desconozco su dimensión, y me retorne dimensionado y con los elementos cargados.
Por ejemplo, quiero sumatorias por meses, paso el rango de fechas como parámetros y el array me tiene que devolver valor por cada mes que encuentre en el rango de fechas. Puede ser variable de 1 a 12 ..
Hay alguna forma de hacer esto?
Código SQL [-]
execute block (f1 timestamp, f2 timestamp)
   retuns (valores array[float] as
declare variable meses smallint;
begin
  meses = datediff(month, :f1, :f2);
  SetLength(valores, meses) // alguna forma de crearle la dimensión
  //y después ir cargando valores .... 
  for select 
     SUM(case extract (MONTH from Fecha) when extract(MONTH from :f1) then cantidad else 0 end) as Mes1,
     iif(meses > 1; SUM(case extract (MONTH from Fecha) when extract(MONTH from :f1) +1 then cantidad else 0 end);) as Mes2
    //etc.
    into :valores do
  suspend;
end

Casimiro Notevi 25-11-2012 21:53:41

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

Casimiro Notevi 25-11-2012 21:59:23

Mira este hilo, a partir de la página 3 hay un código que puede interesarte para lo que quieres.
Aunque el hilo no tiene nada que ver, fue bastante diferente, pero sí que se puso un código de ejemplo que puede servirte.

ARPE1 30-11-2012 08:54:09

Hola,
¡¡¡¡guuaaauuuu!!! qué bueno sería pero hasta donde llegan mis conocimientos no hay array dinámico en firebird o no he encontrado forma de hacerlo.
Al grano, ya que tienes un block ¿por qué no te lo montas con una cadena del estilo 'mes1=valor1|mes2=valor2|, etc....' luego le toca a Delphi, o al lenguaje que uses, currar, hay que desmenuzar esa cadena en un verdadero array dinámico que seguro que tu lenguaje lo permite.
Un saludo.


La franja horaria es GMT +2. Ahora son las 11:02:03.

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