none
É possível criar uma query dinâmica com sys.objects? RRS feed

  • 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
    terça-feira, 1 de setembro de 2009 19:16

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/

    terça-feira, 1 de setembro de 2009 19:20
  • 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
    terça-feira, 1 de setembro de 2009 19:22
  • 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.
    terça-feira, 1 de setembro de 2009 19:36
  • Allan,

    Você não pode utilizar select concatenado?
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quinta-feira, 3 de setembro de 2009 11:55