Inquiridor
É possível criar uma query dinâmica com sys.objects?

Pergunta
-
O que eu quero tentar fazer é o seguinte:
Algo do tipo:
Select * from (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbl_Reg50_2457]') AND type in (N'U'))
eu irei passar o nome da tabela como parâmetro e será feito o select
Att.
Allan Tavares - Analista Programador Jr.- Movido Gustavo Maia Aguiar terça-feira, 1 de setembro de 2009 19:20 (De:SQL Server - Desenvolvimento Geral)
- Editado Allan Tavares terça-feira, 1 de setembro de 2009 19:20
Todas as Respostas
-
Sim, você monta a query em uma variavel varchar e depois usa o "execute"
Declare @Tabela VarChar(50)
Set @Tabela = 'sysobjects'
EXECUTE ('Select * from ' + @Tabela)
Tks. Fausto Fiorese Branco DBA - SQL Server 2k5 São Paulo - Brasil * http://dba-sqlserver.blogspot.com/ -
Allan,
É possível sim, mas não recomendo este tipo de solução por questões segurança.
Mas veja abaixo o código de exemplo:
Declare @Tabela VarChar(500) Set @Tabela='Produtos' Exec('Select * from '+@Tabela)
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA -
Digamos que serão 100 selects em 100 tabelas físicas no banco de dados , e no retorno a quantidade de colunas e os tipos de dados são todos os mesmos;
Se eu quero selecionar todos os dados da tabela já existente 1 faço algo do tipo:
Passo para a Proc o nome da tabela que eu quero e a proc retorna todos os dados da tabela que eu enviei como parâmetro, sendo que o select não pode ser concatenado(EXEC('Select *from tabela1'))
Exemplo:
Passo como parâmetro a string "TABELA1'
Select * from (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TABELA1]') AND type in (N'U'))
Seria como uma sub query que me retorna um objeto tabela....
Eu imagino que não seja possível , mas é sempre bom consultar...
Att.
Allan Tavares - Analista Programador Jr. -