Consultando Metadados
Filed under: Bla bla bla | Tags: consulta metadados, information_schema, Sql Server, system table |
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!
Deixe um comentário