I need a cursor inside a procedure where the user specifies a Table name and the cursor search this table in all databases. If the table exists, it shows the data from the table, if it doesn't exists, it prints out "that table doesn't exists".
CREATE PROCEDURE sp_Teste @nomeTabela varchar(50)='T2' AS DECLARE @TableName VARCHAR(30), @databasename VARCHAR(30), @cmd VARCHAR (MAX), --@qtd numeric(3,0) --declare @perfil varchar(100); --declare @email varchar(100); --declare @sub varchar(100); declare @msg varchar(max); create table #T1 (dbname varchar(80)) insert into #T1 (dbname) SELECT name FROM sys.databases WHERE name NOT IN ('master','tempdb','model','msdb') set @qtd = (select COUNT(*) from #T1) /*=================================CURSOR=================================*/ --Declare @UID int; DECLARE db_cur CURSOR FOR select dbname from #T1 order by dbname; CREATE table #tempTB ( [nome] varchar(max), [idade] int, [salario] int ) OPEN db_cur FETCH NEXT FROM db_cur INTO @databasename; WHILE @@FETCH_STATUS = 0 BEGIN DECLARE tb_cur CURSOR FOR SELECT * FROM @nomeTabela OPEN tb_cur; FETCH NEXT FROM tb_cur INTO @UID; WHILE @@FETCH_STATUS = 0 BEGIN IF exists (select name from sys.tables where name = @nomeTabela) BEGIN SET @CMD = 'SELECT * FROM '+ @nomeTabela INSERT INTO #tempTB(nome, idade, salario) EXEC (@CMD) END IF not exists (select name from sys.tables where name = @nomeTabela) BEGIN SET @msg = 'Nao existe a tabela ' + @nomeTabela PRINT @msg END FETCH NEXT FROM tb_cur INTO @databasename; END CLOSE tb_cur; DEALLOCATE tb_cur; FETCH NEXT FROM db_cur INTO @databasename; END; CLOSE db_cur; DEALLOCATE db_cur;