Este procedimiento nos evita tener que crear un cursor para recorrer todas nuestras tablas, y en una sola línea podemos hacer muchas cosas.
Antes de empezar a utilizar este procedimiento hay que tener mucho cuidado con las repercuciones que nos pueda ocacionar. Ya que aplica a TODAS las tablas de la base de datos.
Para utilizarlo debemos hacer algo como lo siguiente:
–Hace un select a todas las tablas
EXEC sp_MSforeachtable 'select * from ?'
EXEC sp_MSforeachtable 'select * from ?'
–Cuenta todas los registros de las tablas
EXEC sp_MSforeachtable 'select count(*) from ?'
EXEC sp_MSforeachtable 'select count(*) from ?'
–Elimina todos los registros de las tablas
—Cuidado con este ejemplo, vamos a perder todos los datos, (limpieza general)
EXEC sp_MSforeachtable 'truncate table ?'
—Cuidado con este ejemplo, vamos a perder todos los datos, (limpieza general)
EXEC sp_MSforeachtable 'truncate table ?'
–Retorna el nombre y creador de todas las tablas
EXEC sp_MSforeachtable @command1=»print '?'»
EXEC sp_MSforeachtable @command1=»print '?'»
El signo ? representa el nombre de la tabla.
Otro ejemplo mas complejo podría ser:
–Creamos una tabla temporal
create table #rowcount (tablename varchar(128), rowcnt int)
–Inserta en la tabla temporal un select count(*)
exec sp_MSforeachtable
'insert into #rowcount select ''?'', count(*) from ?'
–Hacemos el select en la tabla temporal para ver el resultado
select top 5 * from #rowcount
order by tablename
–Eliminamos la tabla temporal
drop table #rowcount
create table #rowcount (tablename varchar(128), rowcnt int)
–Inserta en la tabla temporal un select count(*)
exec sp_MSforeachtable
'insert into #rowcount select ''?'', count(*) from ?'
–Hacemos el select en la tabla temporal para ver el resultado
select top 5 * from #rowcount
order by tablename
–Eliminamos la tabla temporal
drop table #rowcount
Estos fueron solo ejemplos, pero bien podrías hacer muchas otras cosas dependiendo de lo que quieras hacer.