PDA

Ver la Versión Completa : array en Firebird


NizamUlMUlk
25-11-2012, 20:24:56
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?
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:

http://www.clubdelphi.com/images/UtilizarTAGs.png

Gracias :)

Casimiro Notevi
25-11-2012, 21:59:23
Mira este hilo (http://www.clubdelphi.com/foros/showthread.php?t=81376&highlight=firebird&page=3), 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.