Hola a todos!!!
Aqui tengo una pregunta. Tengo dos recorrido, uno de todas las bases de datos, y dentro de esa, tengo una de todas las tablas de esa base de datos. He estado haciendo unas cuantas pruebas, y el problema que tengo es que se me devuelve siempre las mismas tablas, esto es, no cambia de base de datos, en base de datos.
El codigo es el siguiente:
Set NoCount ON
Declare
@db varchar(50),
@table varchar(50)
--declaro el nuevo cursor donde estara el nombre de cada base de datos
--use master
close nombre
declare nombre cursor for
select name
from master..sysdatabases
open nombre
fetch next
from nombre
into @db
while @@fetch_status=0 --repetir hasta que no se acabe la lista de bd
begin
PRINT 'He cogido la base de datos '+''+@db+''
close tables
--exec('use'+' '+ @db+'')
DECLARE tables CURSOR FOR
select name
from sysobjects
where xtype='U' --or xtype='S'
open tables
fetch next
from tables
into @table
while @@fetch_status=0
begin
PRINT 'estoy en la bd: '+''+@db+''+'y en la tabla: '+''+@table+''
fetch next
from tables
into @table
end
fetch next
from nombre
into @db
end
close nombre
go
El problema segun lo veo yo esta en -->exec('use'+' '+ @db+'')
pq hara el exec, pero no se queda en la base de datos que quiero, vuelve a la que estaba.
Tambien he intentado que en el from del segundo cursor poner @db..sysobjects, pero no deja poner @db en el from. Lo he intentado tambien metiendo la sentencia en una variable, y ejecutarla, pero no me sale o no lo se hacer.
Esa es mi duda, a ver si alguien sabe como mantener trabajar con una base de datos una vez se cambia. o como se puede meter el @db dentro del from para acceder a la bd correcta. Espero haberme explicado bien. Muchas gracias.
Saludos.
--------------------------------------------------------------------------
Cuanto menos sabes, más aprendes. ;)