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

cursor que devuelva todos los valores de las tablas y de las bases de datos sql

Estas en el tema de cursor que devuelva todos los valores de las tablas y de las bases de datos sql en el foro de SQL Server en Foros del Web. buenas estoy intentando hacer un trabajo que me tiene un poco trancado.... necesito un procedimiento almacenado que genere un archivo html que contenga un arbol ...
  #1 (permalink)  
Antiguo 23/09/2012, 19:01
Avatar de maximendez88  
Fecha de Ingreso: septiembre-2012
Ubicación: Montevideo
Mensajes: 131
Antigüedad: 11 años, 7 meses
Puntos: 3
Exclamación cursor que devuelva todos los valores de las tablas y de las bases de datos sql

buenas estoy intentando hacer un trabajo que me tiene un poco trancado....
necesito un procedimiento almacenado que genere un archivo html que contenga un arbol que permita navegar la estructura de todas las bases de datos que estan alojadas en una instancia... los objetos que habran de categorizarse y visualizarse son : tablas, vistas, procedimientos almacenados. funciones e indices... lo estoy intentando hacer mediante cursores y logro traer todas las bases de datos del sistema en un procedimiento almacenado, y la primer tabla de la master... lo que no logro traer son todas las tablas que correspondan a cada una de las bases de datos dejo el codigo de mi script sql adjunto... para ver si alguien se apiada de mi alma y me echa un cable...





Código HTML:
DECLARE @nombreBases varchar(max);
DECLARE @nombreTablas varchar(max);

DECLARE cursorBases CURSOR FOR
SELECT [NAME] FROM sysdatabases ORDER BY 1;

DECLARE cursorTablas CURSOR FOR
SELECT [NAME] FROM sys.tables order by 1;

OPEN cursorBases
OPEN cursorTablas

FETCH NEXT FROM cursorBases
INTO @nombreBases


DECLARE @todo varchar(max);
SET @todo = '<html><body><table border="1">'

WHILE @@FETCH_STATUS = 0
BEGIN 
SET @todo = @todo + '<TR><TD>'+@nombreBases+ '</TD>'






FETCH NEXT FROM cursorTablas
into @nombreTablas

SET @todo=@todo + '<td>'+@nombreTablas+'</td></tr>'





FETCH NEXT FROM cursorBases
INTO @nombreBases
END




set @todo = @todo + '</html></body></table>'

CLOSE cursorBases;
DEALLOCATE cursorBases;

close cursorTablas;
deallocate cursorTablas;

print @todo
  #2 (permalink)  
Antiguo 24/09/2012, 11: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: cursor que devuelva todos los valores de las tablas y de las bases de dato

¿No te sirve el MANAGEMENT STUDIO?
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 24/09/2012, 12:48
Avatar de maximendez88  
Fecha de Ingreso: septiembre-2012
Ubicación: Montevideo
Mensajes: 131
Antigüedad: 11 años, 7 meses
Puntos: 3
Exclamación Respuesta: cursor que devuelva todos los valores de las tablas y de las bases de dato

el management studio me sirve a mi... pero yo quiero que un cliente lo vea en html
  #4 (permalink)  
Antiguo 24/09/2012, 14:23
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: cursor que devuelva todos los valores de las tablas y de las bases de dato

query dinamico :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 24/09/2012, 14:46
Avatar de maximendez88  
Fecha de Ingreso: septiembre-2012
Ubicación: Montevideo
Mensajes: 131
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: cursor que devuelva todos los valores de las tablas y de las bases de dato

Cita:
Iniciado por Libras Ver Mensaje
query dinamico :)

que seria un query dinamico¿?
  #6 (permalink)  
Antiguo 24/09/2012, 15:01
Avatar de Alexis_Mejias  
Fecha de Ingreso: enero-2005
Ubicación: Santiago
Mensajes: 77
Antigüedad: 19 años, 3 meses
Puntos: 17
Respuesta: cursor que devuelva todos los valores de las tablas y de las bases de dato

Cita:
Iniciado por maximendez88 Ver Mensaje
que seria un query dinamico¿?
Es una sentencia que tu creas a Piaccere (si es que se escribe así) y puedes agregar campos y nombres de tablas desde variables

Seria Algo así

Código:
DECLARE @SQL VARCHAR(8000)
DECLARE @Tabla VARCHAR(100)
SET @Tabla = 'MITABLA' 
SET @SQL = 'SELECT * FROM ' + @Tabla
EXEC (@SQL)
Eso seria....

saludos,
__________________
Alexis Mejias C.
Freelancer Chile - Si te sirvió puntúa positivo
Blog Personal
  #7 (permalink)  
Antiguo 24/09/2012, 15:56
Avatar de maximendez88  
Fecha de Ingreso: septiembre-2012
Ubicación: Montevideo
Mensajes: 131
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: cursor que devuelva todos los valores de las tablas y de las bases de dato

no se si se entiende pero yo necesitaria hacer un cursor que recorra todas las tablas de la instancia algo asi... pero no se como lograrlo ya que esto me da error


Código HTML:
DECLARE @nombreBases varchar(max);
DECLARE @nombreTablas varchar(max);

DECLARE cursorBases CURSOR FOR
SELECT [NAME] FROM sysdatabases ORDER BY 1;

DECLARE cursorTablas CURSOR FOR
SELECT table_name FROM @nombreBases.INFORMATION_SCHEMA.Tables
  #8 (permalink)  
Antiguo 24/09/2012, 16:02
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: cursor que devuelva todos los valores de las tablas y de las bases de dato

para empezar para que necesitas un cursor? si puedes hacer eso con un query dinamico y un while algo como esto:

Código SQL:
Ver original
  1. ---Obtener los nombres de todas las tablas de una base y sacar cuantos registros tiene cada una de ellas
  2. DROP TABLE #temp
  3. DROP TABLE #t
  4. SELECT TABLE_NAME, IDENTITY(INT,1,1) AS ROW
  5. INTO #temp
  6. FROM information_schema.TABLES
  7. WHERE (table_type = 'base table')
  8.  
  9.  
  10.  
  11. CREATE TABLE #t
  12. (
  13.     [name] NVARCHAR(128),
  14.     [ROWS] CHAR(11),
  15.     reserved VARCHAR(18),
  16.     DATA VARCHAR(18),
  17.     index_size VARCHAR(18),
  18.     unused VARCHAR(18)
  19. )
  20.  
  21.  
  22. DECLARE
  23. @contador INT,
  24. @query VARCHAR(MAX),
  25. @x INT,
  26. @nombre VARCHAR(200)
  27.  
  28. SELECT @contador=COUNT(*) FROM #temp
  29. SET @x=1
  30. SET @query=''
  31. while @x<=@contador
  32. BEGIN
  33.     SELECT @nombre=TABLE_NAME FROM #temp WHERE ROW=@x
  34.        
  35.     SET @query='insert into #t exec sp_spaceused ' + CHAR(39) + @nombre + CHAR(39)  
  36.     EXEC Sp_sqlExec @query    
  37.     SET @x=@x+1
  38. END
  39.  
  40.  
  41. ----------------------------------------------------
  42.  
  43. SELECT * FROM #temp

nada mas aplicalo para lo que necesitas y listo :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 24/09/2012, 16:26
Avatar de maximendez88  
Fecha de Ingreso: septiembre-2012
Ubicación: Montevideo
Mensajes: 131
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: cursor que devuelva todos los valores de las tablas y de las bases de dato

gracias por la respuesta... los cursores los utilizo porque en el stored procedure necesito devolver un html que dibuje las databases, y las tablas correspondientes a cada base de datos.

algo asi es lo que tengo hecho


Código HTML:
DECLARE @nombreBases varchar(max);
DECLARE @nombreTablas varchar(max);


DECLARE cursorBases CURSOR FOR
SELECT [NAME] FROM sysdatabases ORDER BY 1;



DECLARE cursorTablas CURSOR FOR

SELECT table_name FROM INFORMATION_SCHEMA.Tables 

OPEN cursorBases
OPEN cursorTablas

FETCH NEXT FROM cursorBases
INTO @nombreBases


DECLARE @todo varchar(max);
SET @todo = '<html><body><table border="1">'

WHILE @@FETCH_STATUS = 0
BEGIN 
SET @todo = @todo + '<TR><TD>'+@nombreBases+ '</TD>'






FETCH NEXT FROM cursorTablas
into @nombreTablas

SET @todo=@todo + '<td><h2>Tablas</h2>'+@nombreTablas+'</td></tr>'





FETCH NEXT FROM cursorBases
INTO @nombreBases
END




set @todo = @todo + '</html></body></table>'

CLOSE cursorBases;
DEALLOCATE cursorBases;

close cursorTablas;
deallocate cursorTablas;

print @todo


  #10 (permalink)  
Antiguo 25/09/2012, 07:14
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: cursor que devuelva todos los valores de las tablas y de las bases de dato

analisaste el codigo que te mande?? viste que es lo mismo que un cursor sin que consuma los recursos de un cursor?? creo que no...te recomiendo que investigues un poco acerca de queries dinamicos que es lo que te puede servir...
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: bases, cursor, select, sql, tabla, tablas
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 02:27.