O exemplo abaixo utiliza uma tabela temporária e um cursor para executar uma consulta individual em cada tabela, salvar e mostrar o resultado.
--SELECT * FROM dbo.SYSOBJECTS WHERE XTYPE = 'U' AND NAME = 'nomeTabelaReal' /* Verifica se uma tabela real existe */
--SELECT * FROM Tempdb..SYSOBJECTS Where XTYPE='U' AND name = 'nomeTabelaTemp' /* Verifica se uma tabela temp existe */
if exists (SELECT * FROM Tempdb..SYSOBJECTS WHERE XTYPE = 'U' AND NAME like '#tabelahelp%')
begin
print 'Tabela já existe.'
end
else /* Cria tabela temporária chamada #tabelahelp */
CREATE TABLE #tabelahelp (
tabela nvarchar(100),
registros int
);
declare @col1 nvarchar(100) , @col2 nvarchar(100) /* Parâmetros para o Cursor */
declare @cons nvarchar(100) , @qtd int
declare dados cursor scroll for /* Declaração do Cursor (Array) */
/*O select abaixo retorna a lista de tabelas com as quais estou querendo trabalhar */
select distinct tabela,0 as registros from GCAMPOS where TABELA like 'SALUNO%'
open dados
fetch next from dados into @col1,@col2
WHILE @@FETCH_STATUS = 0 /* Enquanto tiver dados executa a ação */
begin
set @cons = 'select @qtd = count(*) from '+@col1; /* Verifico a quantidade de itens na tabela */
exec sp_executeSQl @cons, N'@qtd int output', @qtd output
set @col2 = (select @qtd); /* Salvo o resultado na variável para inserir na tab temp */
--print ('INSERT INTO #tabelahelp (tabela,registros) VALUES ('+@col1 + ',' +@col2 +')');
/* Executa insert para salvar os dados na tabela temporária */
EXEC ('INSERT INTO #tabelahelp (tabela,registros) VALUES ('''+@col1 + ''',''' +@col2 +''')');
fetch next from dados into @col1,@col2
end
close dados /* Fecha o Cursor */
deallocate dados /* Libera a memória utilizada */
select * from #tabelahelp /* Visualiza dados da tabela criada */
--drop table #tabelahelp /* Apaga tabela criada */
Obs.: Foi testado há algum tempo já...
Nenhum comentário:
Postar um comentário