Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/08/2012, 16:50
Avatar de jhodmar
jhodmar
 
Fecha de Ingreso: febrero-2012
Ubicación: Medellin
Mensajes: 52
Antigüedad: 12 años, 2 meses
Puntos: 1
Exclamación Problema para tomar los datos en tabla temporal

buen día... y espero me ayuden un poco con esta consulta!
inicialmente lo que busco es almacenar en una temporal todas las referencias que me cumplan con la condicion! ....

para insertar esas referencias en la tabla temporal debo tener los condicionales que son variables por eso paso toda la consulta por que es formada fuera de sql.. por que no logre como formar ese condicional compuesto (id_zona =15 OR id_zona =16 OR id_zona =17 OR id_zona =18
OR id_zona =19 OR id_zona =20 OR id_zona =21 OR id_zona =22) al igual que el IdNodo puede ser variable...
una vez creada mi tabla temporal debo recorrerla y ese es el problema...
la temporal si es creada pero no se como recorrerla y sacar referencia a referencia ya que necesito llenar otra temporal donde almacena las cantidades finales del inventario al final de cada periodo (cabe aclarar que una referencia no se puedo mover en N dia mientras que otra si se movio ese dia por eso la necesidad de buscar referencia referencia)por periodos de x referencia! recorriendo entre fechas

como haria para que en el siguiente codigo la variable @referencia me tome la referencia de la temporal por que el ciclo ya lo tengo o eso creo!
Código:
while @@rowcount <> 0--que existan filas mientras tomo las demas referencias
								begin--**
									set rowcount 0
mas o menos el codigo de arriba seria el ciclo... ahora bien con el codigo siguiente intento por lo menos tomar una referencia de la temporal y me bota el error que esta al final de todo!
Código:
--drop table #Temp_Referencias
declare @sql nvarchar (2000)
declare @sqlReferencia nvarchar(2000)
declare @referencia varchar(11)--alomacena cada una de las referencias de los productos en cada pasada!
DECLARE @ParmetroDefinition nvarchar(500)
set @sql ='select distinct(referencia)into #Temp_Referencias from TBL_INV_ITEM
	where idNodo=19 OR idNodo =20
	and Referencia in 
			(select distinct(Referencia) 
			  from TBL_INV_RemFact_Pedidos
			  where NroPedido in 
							(select NroPedido 
		from TBL_VYD_DetallesP
		where id_zona =15 OR id_zona =16 OR id_zona =17 OR id_zona =18
OR id_zona =19 OR id_zona =20 OR id_zona =21 OR id_zona =22)
and Referencia in (select distinct(Referencia) from TBL_INV_ITEM where idTipo =7))'
EXECUTE sp_executesql @sql
		set rowcount 1--indico primera fila!
				set @sql =N'select @subReferencia_OUT = Referencia from #Temp_Referencias';
				set @ParmetroDefinition=N'@subReferencia_OUT varchar(11) OUTPUT';
				EXECUTE sp_executesql @sql,@ParmetroDefinition,@subreferencia_OUT=@Referencia OUTPUT;
				select @referencia
el mensaje es el siguiente... como pueden ver las filas de la temporal si se afectan... e dice que afecto a 9 refencias! y eso es correcto
Código:
(9 filas afectadas)
Mens. 208, Nivel 16, Estado 0, Línea 1
El nombre de objeto '#Temp_Referencias' no es válido.
pienso por que ejecuto la temporal de la forma! EXECUTE sp_executesql @sql pero debo hacerlo asi ya que el condicional es variable y es formado fuera de SQL y es pasado como un parametro!

espero me ayuden y gracias de antemano!