Consultando Metadados

 

Durante o processo de desenvolvimento é comum realizar consultas a metadados, ou seja, consultas que retornam informações sobre o próprio banco; algo como a consulta abaixo,  que retorna todas as tabelas de um determinado banco, junto com o nome de suas colunas e o tipo de dados:

SELECT

      t.name      nome_tabela,

      c.name      nome_coluna,

      ty.name     tipo_dado

FROM

      sysobjects t, syscolumns c, systypes ty

WHERE

      t.id = c.id AND

      t.type = ‘U’ AND

      c.xtype = ty.type

 

 

Isto está errado?

Não.

No entanto não é uma boa prática realizar consultas diretamente nas tabelas de sistema. Além do esforço em entender a estrutura dessas informações e construir a query, existe a possibilidade de no futuro a Microsoft alterar a estrutura de umas dessas tabelas. E aí? O que acontece com sua aplicação que estava buscando dados naquela estrutura?

Para evitar esse tipo de problemas o Microsoft SQL Server oferece um catalogo de views de metadados (desenvolvidas de acordo com os padrões ISO); a idéia é que essas views sempre retornarão os dados independente da versão do SQL Server, logo se houverem mudanças nas tabelas de sistema, sua aplicação não será afetada porque ela está buscando dados de uma view, além disso, a forma de consulta é muito simples. Veja só:

Se você quer obter os mesmos dados da consulta acima utilizando uma dessas views, precisa somente disso:

SELECT

      TABLE_NAME, COLUMN_NAME, DATA_TYPE

FROM

      INFORMATION_SCHEMA.COLUMNS

Veja como é mais simples.

Quer consultar todas as tabelas de sua base que comecem com tb_pedido? Então tente isso:

 

SELECT

      TABLE_NAME

FROM

      INFORMATION_SCHEMA.TABLES

WHERE

      TABLE_NAME like ‘tb_pedido%’

 

Se quiser consultar todas as procedures que iniciam com ‘listar%’ utilize:

SELECT

      *

FROM

      INFORMATION_SCHEMA.ROUTINES

WHERE

      SPECIFIC_NAME like ‘listar%’ and ROUTINE_TYPE = ‘PROCEDURE’

Além destas existem outras views que podem te auxiliar na consulta a metadados. Veja uma  lista completa aqui.

Bom trabalho!

 

 

 

 

No comments yet

Deixe um comentário