como puedo eliminar los resultados en blanco

27/04/2007 - 00:50 por Alfredo Reyna | Informe spam
hola a todos.

ya entes expuse un pregunta sobre como obtener datos de una tabla. sin saber
en que tabla estan los datos. ya me funciona pero me muestra resultados en
blanco, es decir si lo encuentra en la 4 tabla me muestra que no encontro
nada en la 3 anteriores en mi panel de resultados. ya estuve probando son
Set nocount, pero nadamas no doy en el clavo. les expongo mi consulta para
ver si me pueden auxiliar.

CREATE PROCEDURE [pa_traerdatos]
@campo char(25),
@dato char(25)

AS
SET NOCOUNT On
DECLARE @tabla nvarchar(50)
DECLARE tablas_cursor CURSOR
FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS INF_C1
INNER JOIN (SELECT COLUMN_NAME,COUNT(*) AS CANTIDAD FROM
INFORMATION_SCHEMA.COLUMNS
GROUP BY COLUMN_NAME) INF_C2 ON
INF_C1.COLUMN_NAME = INF_C2.COLUMN_NAME
WHERE INF_C2.CANTIDAD >1 and INF_C2.column_name = @campo ORDER BY
INF_C1.COLUMN_NAME

open tablas_cursor

FETCH NEXT FROM tablas_cursor
INTO @tabla

WHILE @@FETCH_STATUS = 0
BEGIN

declare @sql nvarchar(4000)
set @sql='select tocid from '+ @tabla + ' where referencia = @dato '
exec sp_executesql @sql, N'@dato char(25)',@dato=@dato
IF @@ROWCOUNT = 0
BEGIN
SET NOCOUNT OFF
FETCH NEXT FROM tablas_cursor INTO @TABLA
END
ELSE
BREAK
END
SET NOCOUNT OFF
CLOSE tablas_cursor
DEALLOCATE tablas_cursor
go

gracias de antemano y Saludos.
pd. utilice cursores porque me comentaron que era la única manera.
Alfredo Reyna
 

Leer las respuestas

#1 Maxi
28/04/2007 - 15:18 | Informe spam
Hola, como que te aparecen cosas en blanco? como te salio el resultado? si
no hay registros no deberia aparecer nada, lo estas insertando en alguna
tabla?

"Alfredo Reyna" escribió en el
mensaje de noticias
news:
hola a todos.

ya entes expuse un pregunta sobre como obtener datos de una tabla. sin
saber
en que tabla estan los datos. ya me funciona pero me muestra resultados
en
blanco, es decir si lo encuentra en la 4 tabla me muestra que no encontro
nada en la 3 anteriores en mi panel de resultados. ya estuve probando son
Set nocount, pero nadamas no doy en el clavo. les expongo mi consulta para
ver si me pueden auxiliar.

CREATE PROCEDURE [pa_traerdatos]
@campo char(25),
@dato char(25)

AS
SET NOCOUNT On
DECLARE @tabla nvarchar(50)
DECLARE tablas_cursor CURSOR
FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS INF_C1
INNER JOIN (SELECT COLUMN_NAME,COUNT(*) AS CANTIDAD FROM
INFORMATION_SCHEMA.COLUMNS
GROUP BY COLUMN_NAME) INF_C2 ON
INF_C1.COLUMN_NAME = INF_C2.COLUMN_NAME
WHERE INF_C2.CANTIDAD >1 and INF_C2.column_name = @campo ORDER BY
INF_C1.COLUMN_NAME

open tablas_cursor

FETCH NEXT FROM tablas_cursor
INTO @tabla

WHILE @@FETCH_STATUS = 0
BEGIN

declare @sql nvarchar(4000)
set @sql='select tocid from '+ @tabla + ' where referencia = @dato '
exec sp_executesql @sql, N'@dato char(25)',@dato=@dato
IF @@ROWCOUNT = 0
BEGIN
SET NOCOUNT OFF
FETCH NEXT FROM tablas_cursor INTO @TABLA
END
ELSE
BREAK
END
SET NOCOUNT OFF
CLOSE tablas_cursor
DEALLOCATE tablas_cursor
go

gracias de antemano y Saludos.
pd. utilice cursores porque me comentaron que era la única manera.
Alfredo Reyna

Preguntas similares