none
Retornar tabelas que tenham apenas um determinado campo RRS feed

  • Pergunta

  • Saudações,

    Pessoal a minha situação é a seguinte, o meu banco de dados deve ter aproximadamente 1200 tabelas, é o banco de dados de um ERP. Bom está acontecendo que tenho que procurar no banco de dados tabelas que tenham a coluna OP.

    Exemplificando:

    As tabelas tem os nomes de acordo com os módulos sendo que esse nome são formados por 2 ou 3 letras e 3 a 4 numeros, por exemplo SA1010 que referencia o cadastro de clientes, logo os campos desta tabela são referenciados por A1_NOMECAMPO.

    Então preciso verificar em todo o banco de dados, quais tabelas tem o nome de campo XX_OP (onde XX é a referencia da tabela).

    Criei uma query que lista todas as tabelas do banco e coloca para elas o campo XX_OP, mas as tabelas que não tem esse campo dão erro e a query não me serve, pois como disse, são muitas tabelas no banco de dados. Estou colocando a query para vocês verem.

    SELECT ' SELECT * FROM ' + name + ' WHERE ' +substring(name,2,2)+  '_OP <> ''' from sysobjects where type =  'U' and substring(name,1,1) = 'S' ORDER BY name

    Desde já agradeço a todos.

    quinta-feira, 11 de novembro de 2010 18:16

Respostas

  • Gustavo,

    Para fazer o que vc quer, use a SYSCOLUMNS. Nela vc tem a informação das tabelas e colunas.

    Por exemplo:

    SELECT

     

    NAME AS COLUNA, OBJECT_NAME(ID) AS TABELA, SUBSTRING(OBJECT_NAME(ID), 2,2) + '_OP'

    FROM

     

    SYSCOLUMNS WHERE NAME LIKE '%_OP%'

    Use este exemplo para tentar adequar à sua necessidade.

    Att.,


    Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com Se o post foi útil, não esqueça de marcá-lo.
    • Sugerido como Resposta Marcus Paulo Couto sexta-feira, 12 de novembro de 2010 18:31
    • Marcado como Resposta Eder Costa quinta-feira, 16 de dezembro de 2010 11:14
    sexta-feira, 12 de novembro de 2010 03:41