como listar todas as tabelas

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
claudiolins
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qua, 10 Dez 2008 9:17 am
Localização: Nilópolis - RJ

Sou iniciante em Oracle por isto desculpe se a pergunta for muito tola...


Preciso listar todas as tabelas de um determinado banco.

Como posso fazer isto ?
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Tente esse código:

Selecionar tudo

SELECT * FROM ALL_TABLES;
Se você quiser listar apenas as tabelas do seu owner, use

Selecionar tudo

SELECT * FROM USER_TABLES
Para aprender mais sobre as tabelas do dicionário de dados, tente rodar essa tabela:
(Ela mostra pra que serve cada tabela do dicionário de dados)

Selecionar tudo

SELECT * FROM DICTIONARY
Qualquer coisa, manda pra gente.
claudiolins
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qua, 10 Dez 2008 9:17 am
Localização: Nilópolis - RJ

Agora preciso procurar um valor especifico nestas tabelas.
Não sei o nome da tabela nem da coluna por isto da pergunta...

Explicando melhor: Preciso encontrar um valor específico ('Matriz') numa tabela, mas não sei o nome da coluna ou da tabela...

Sendo assim preciso "varrer" as tabelas e procurar o valor em cada coluna...

desde já agradeço pela ajuda.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Você tem que fazer isso apenas 1 vez ? (imagin que sim).

É possivel criar um script que varre todas tabelas (como citado nos topico acima).

Algo +ou- assim:

Selecionar tudo

SELECT 'select * from '||A.TABLE_NAME||' where '||B.COLUMN_NAME||'=''Matriz''; '
FROM ALL_TABLES      A
,    ALL_TAB_COLUMNS B
WHERE A.OWNER='XXXM'
  AND A.TABLE_NAME = B.TABLE_NAME
  AND A.OWNER      = B.OWNER
  AND B.DATA_TYPE  = 'VARCHAR2'
Esse SQL vai gerar algo assim:

Selecionar tudo

select * from HRD_VIEW_BACKUP_0514 where EMPLOYMENT_COUNTRY='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where HOST_COUNTRY_COST_CENTER='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where HOST_CC_MANAGER_NAME='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where HOST_CC_MANAGER_BADGE='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where PERSONID='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where POSITIONID='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where STATUS='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where BADGE='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where NAME_LAST='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where NAME_FIRST='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where NAME_MIDDLE='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where HIRE_DATE='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where REHIRE_DATE='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where TERM_DATE='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where MAIL_STOP='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where JOB_CODE='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where JOB_DESC='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where JOB_GRADE='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where COST_CENTER='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where CC_MGR_NAME='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where CC_MGR_BADGE='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where LOCATION_CD='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where LOC_NAME='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where BUS_LINE_1='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where BUS_LINE_2='Matriz'; 
select * from HRD_VIEW_BACKUP_0514 where BUS_CITY='Matriz'; 
É possível fazer algo melhor... Tipo criar um PL/SQL que gera um SQL com OR em cada campo.
Algo assim:

Selecionar tudo

SELECT * from TABELA where CAMPO1='Matriz' OR CAMPO2='Matriz'
etc

Mas daí você tem que fazer via PL/SQL, abre um cursor e tal
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 15 visitantes