Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Ayuda con P. Almacenado descripcion del problema

Estas en el tema de Ayuda con P. Almacenado descripcion del problema en el foro de Bases de Datos General en Foros del Web. Hola de nuevo: tengo una matriz (60000 x 108) con valores de precios, a partir de esta debo generar otra (igual dimension) luego de haber ...
  #1 (permalink)  
Antiguo 10/11/2003, 13:59
 
Fecha de Ingreso: noviembre-2003
Mensajes: 2
Antigüedad: 20 años, 5 meses
Puntos: 0
Ayuda con P. Almacenado descripcion del problema

Hola de nuevo:
tengo una matriz (60000 x 108) con valores de precios, a partir de esta debo
generar otra (igual dimension) luego de haber sometido los valores a una formula
((precio actual - precio anterior)/precio actual), dado que son 108 campos y que
podrian aumentar en el futuro ya que son fechas, pretendo usar la tabla syscolumns
para obtener el dinamismo necesario. Entonces la idea es poder obtener el nombre
(en este caso serie) de la primera fila y moverse hacia la derecha con los valores de
syscolumns realizando el calculo y actualizando o insertando en la matriz nueva
en la fecha indicada.
Esta rutina la implemente en visual y funciono para una matriz de (10 x 108) pero
tomo un poco de tiempo, ni hablar de 60.000 filas....
Adjunto el pseudo-codigo en Tsql por si les queda mas claro lo que intento.

Desde ya muchas gracias......



CREATE PROCEDURE [sp_llena_matriz]

AS

DECLARE @campo varchar (255)
DECLARE @sql varchar (255)
DECLARE @up varchar (255)
DECLARE @id int
DECLARE @retorno real
DECLARE @pt real
DECLARE @pt1 real
DECLARE @serie char (50)

SELECT @pt1=0

DECLARE cur_ser CURSOR FOR SELECT serie FROM copia_cintap ORDER BY serie

DECLARE cur_colu CURSOR FOR
SELECT name FROM syscolumns WHERE (id=32165421 and name<> 'serie' ) order by name

OPEN cur_ser
FETCH NEXT FROM cur_ser into @serie

WHILE (@@fetch_status =0)
BEGIN
OPEN cur_colu
FETCH NEXT FROM cur_colu INTO @campo
WHILE (@@fetch_status =0)
BEGIN
--open cur_copia
--fetch next from cur_copia into @pt
SELECT @pt="select "+ @campo +" from copia_cintap where serie = '" + @serie + "'"
if (@pt<>null or @pt <>'')
begin
SELECT @retorno=((@pt-@pt1)/@pt)
SELECT @sql= "UPDATE copia_cintap SET "+ @campo + " = " + @retorno +" where serie ='" + @serie + "'"
SELECT @pt1=@pt
end
if (@pt = null or @pt = '')
begin
SELECT @sql= "UPDATE copia_cintap SET "+ @campo + " = 0 where serie ='" + @serie + "'"
SELECT @pt1=0
end
EXECUTE (@sql)
FETCH NEXT FROM cur_colu INTO @campo
END
--close cur_copia
--deallocate cur_copia
CLOSE cur_colu
DEALLOCATE cur_colu
FETCH NEXT FROM cur_ser INTO @serie
END

close cur_ser
deallocate cur_ser
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:19.