SELECT TABLE_NAME,
OWNER,
UPPER(SUBSTR(TABLE_NAME,1,1)) AS "TIPO"
FROM ALL_TAB_COLUMNS
WHERE UPPER(SUBSTR(TABLE_NAME,1,1)) IN ('A','B','G','P','S','V')
AND OWNER = 'DNR'
AND UPPER(COLUMN_name) = 'MATRICULA'
AND TABLE_NAME NOT IN ('ALL_ALL_TABLES')
AND TABLE_NAME NOT LIKE ('%COPIA')
AND TABLE_NAME NOT LIKE ('%COPIA_%')
AND TABLE_NAME NOT LIKE ('%BKP')
AND TABLE_NAME NOT LIKE ('%BK')
AND TABLE_NAME NOT LIKE ('%ESPELHO')
AND TABLE_NAME NOT LIKE ('%ERRO')
AND TABLE_NAME NOT LIKE ('%ERRO_%')
AND TABLE_NAME NOT LIKE ('%CEL')
Mas caso eu queira, dá pra consultar as tabelas no dicionário de dados do oracle, mas pela descrição das mesmas. É possível? Se sim, como eu faço?
Uma coisa .. existem diferenças entre as views de dicionário "ALL_", "USER_" e "DBA_"
- "USER_": Corresponde aos objetos pertencentes ao usuario corrente (a sessão onde você executa as queries);
- "ALL_" : Além dos objetos do usuário, permite verificar os demais objetos aos quais este usuário tem acesso;
- "DBA_" : É a visão mais completa de todas, listando os objetos aos quais o usuário tem ou não acesso;
Eu recomendo que você use preferencialmente as visões USER_ ou DBA_. A visão "ALL_" pode deixar de mostrar alguma coisa que seu usuário logado não tenha acesso.
Bem .. sobre a sua pergunta, acho que você deve estar perguntando se é possível acessar as DESCRICOES de TABELAS e COLUNAS armazenadas no dicionário de dados.
Se for este o caso, existem duas views de dicionário de dados que recuperam as descrições das tabelas e colunas. Isso, desde que você tenha populado estas informações com os comandos "COMMENT ON TABLE " e "COMMENT ON COLUMN".
O nome destas visões são DBA_TAB_COMMENTS e DBA_COL_COMMENTS (existem também as ALL_ e USER_).
Não sei se a sua dúvida era exatamente este. Se não for, por favor continue atualizando este tópico.
Bom dia, obrigado pelos esclarecimentos quanto aos tipos de visões. Eu sabia que davam acesso a visões diferentes, mas me confundia em comparação um com o outro, mas senão me engano eu não tenho acesso as view de DBA. Vou testar depois.
Quanto as views de comentário eu não as conhecia, mas além de querer ver os comentários eu preciso consultar as tabelas pelo próprio comentário. Entendeu? Eu ainda não testei essas views mas os comentários provavelmente devem estar associados as tabelas (parece obvio), ou eu preciso relacionar com as views de tabela?
Por que no meio caso é o seguinte, além das tabelas serem "gringas" os nomes não são muito sugestivos, as mesmas são identificadas por letras e números (código) que são associados a cada funcionalidade e/ou tela do front-end. E como não temos muita documentação formal e nem um DER, eu acredito que ficaria mais fácil procurar as tabelas pelos comentários. Sacou?
Não respondi antes porque eu estava sem tempo. Mas agradeço a ajuda de todos. No meu caso fiz o seguinte script abaixo para atender a minhas necessidades:
SELECT C.TABLE_NAME,
C.OWNER,
C.COLUMN_NAME,
UPPER(SUBSTR(C.TABLE_NAME,1,1)) AS "TIPO",
T.TABLE_NAME,
T.OWNER,
T.TABLE_TYPE,
T.COMMENTS
FROM ( SELECT CM.*
FROM ( SELECT *
from DBA_TAB_COMMENTS
where ( COMMENTS <> ' '
OR COMMENTS IS NOT NULL )
AND OWNER NOT IN ('SYS','SYSTEM')
) CM
WHERE CM.OWNER = 'OWNER'
) T,
( SELECT *
FROM DBA_TAB_COLUMNS
WHERE UPPER(SUBSTR(TABLE_NAME,1,1)) IN ('A','B','G','P','S','V')
--AND TABLE_NAME = 'TABELA'
--AND UPPER(COLUMN_name) LIKE 'COLUNA%'
) C
WHERE T.OWNER = C.OWNER
AND T.TABLE_NAME = C.TABLE_NAME
AND UPPER(TRIM(T.COMMENTS)) LIKE UPPER(TRIM('%TABELA%'))