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

imprimir variables dentro de un bucle

Estas en el tema de imprimir variables dentro de un bucle en el foro de SQL Server en Foros del Web. Buenas tardes El caso es que no consigo imprimir el contenido de una variable, la variable recibe el dato desde un cursor que recorro con ...
  #1 (permalink)  
Antiguo 13/07/2011, 06:38
 
Fecha de Ingreso: octubre-2006
Mensajes: 7
Antigüedad: 17 años, 5 meses
Puntos: 0
imprimir variables dentro de un bucle

Buenas tardes

El caso es que no consigo imprimir el contenido de una variable, la variable recibe el dato desde un cursor que recorro con un bucle.

Sql Server siempre me devuelve el mismo mensaje "1fila afectadas por la ultima consulta" pero no me muestra nada.

el codigo es el siguiente, he probado con Select y con Print sin conseguir nada.

Código:
DECLARE @tabla AS varchar(50); 
DECLARE c CURSOR FOR SELECT table_name FROM Information_Schema.Tables WHERE (table_name LIKE'%XMIN');
OPEN c;
FETCH next FROM c INTO @tabla;
WHILE @@fetch_status = 0 BEGIN
SELECT @tabla;
PRINT @tabla;
FETCH next FROM c INTO @tabla;
END
CLOSE c; 
DEALLOCATE c;
Se que esto se puede hacer sin necesidad de un cursor, pero es una version resumida de un codigo mas grande que imprime mas variables dentro del bucle.

¿Por que no me muestra nada en la ventana de resultados?
  #2 (permalink)  
Antiguo 13/07/2011, 10:04
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: imprimir variables dentro de un bucle

Debes incluir el SET a tu variable

SET @tabla = ''

Ademas, de asegurate que tu WHERE se cumpla, ejecutandolo por aparte:

SELECT table_name FROM Information_Schema.Tables WHERE (table_name LIKE'%XMIN'

Si no es indiscrecion, para que quieres el ciclo WHILE????
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 14/07/2011, 00:17
 
Fecha de Ingreso: octubre-2006
Mensajes: 7
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: imprimir variables dentro de un bucle

El Set lo utilizo tambien y sigue sin sacar resultados..

Voy a poner el script completo para que te hagas mejor una idea de lo que hago.

DECLARE @aux as varchar(800);
DECLARE @res AS varchar(800);
DECLARE @tabla AS varchar(50);
DECLARE @ssql AS varchar(200);
DECLARE c CURSOR FOR SELECT table_name FROM Information_Schema.Tables WHERE (table_name LIKE'%XMIN');

--El cursor devuelve un resultado de 20 tablas, las cuales quiero recorrer una a una para obtener la max(fecha_hora) de cada tabla

OPEN c;
FETCH next FROM c INTO @tabla;
WHILE @@fetch_status = 0 BEGIN
SET @ssql = 'select max(fecha_hora) into @aux from ' + @tabla;
EXEC (@ssql);
SET @res = @aux;
SELECT @res;
FETCH next FROM c INTO @tabla;
END

CLOSE c;
DEALLOCATE c;

El while es para recorrer todas las tablas que me devuelve el cursor, me imagino que se podria hacer con un FOR, pero no creo que ese sea el problema no?

pd: He comprobado que el cursor tiene informacion dentro, pues ejecuto la select del cursor aparte y veo como resultado las 20 tablas.
  #4 (permalink)  
Antiguo 14/07/2011, 07:25
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: imprimir variables dentro de un bucle

NO pusiste en tu codigo
set @tabla='' esto no es porque estes seteando mal los valores o tengas un error de sintaxis, lo que pasa es que las variables varchar necesitan setearse antes de usarse para que puedas imprimir su valor :)


Saludos!!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 14/07/2011, 09:03
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: imprimir variables dentro de un bucle

Claro, si yo declaro una variable de tipo varchar y NUNCA la seteo, entonces contiene NULL.

Gracias por la explicacion mi estimado y compañero Libras.

oreygore.- Deberias poner atencion en lo que se te comenta.

Tu codigo esta mal, esto jamaz funcionara:

SET @ssql = 'select max(fecha_hora) into @aux from ' + @tabla;
EXEC (@ssql);

Ya que la variable @aux, la estas contemplando en un query dinamico, por tanto, no puedes hacer mencion de ella en tu codigo normal.

Deberias leer un poco sobre SP_EXECUTESQL
__________________
MCTS Isaias Islas

Etiquetas: bucle, select, server, sql, tabla, variables
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 11:39.