Tem como obter todos os nomes das tabelas de um banco???

Firebird

14/06/2004

Caros Colegas..

Como faço para obter todos os nomes das tabelas de um banco de dados firebird??

agradeço muito a atenção..

Cabelo


Cabelo

Cabelo

Curtidas 0

Respostas

Vinicius2k

Vinicius2k

14/06/2004

Colega,

Use uma query com a seguite instrução :
select distinct RDB$RELATION_NAME from RDB$RELATION_FIELDS
where ( RDB$SYSTEM_FLAG = 0 or RDB$SYSTEM_FLAG is null) and
        not RDB$RELATION_NAME in (select RDB$VIEW_NAME from RDB$VIEW_RELATIONS
      )


Espero ter ajudado...
T+


GOSTEI 0
Afarias

Afarias

14/06/2004

...ou...


SELECT RDB$RELATION_NAME FROM RDB$RELATIONS
WHERE RDB$SYSTEM_FLAG = 0 or RDB$SYSTEM_FLAG is null


e pra não ver as VIEWS ::


SELECT RDB$RELATION_NAME FROM RDB$RELATIONS
WHERE (RDB$SYSTEM_FLAG = 0 or RDB$SYSTEM_FLAG is null)
AND RDB$VIEW_BLR IS NULL;


T+


GOSTEI 0
Vinicius2k

Vinicius2k

14/06/2004

:oops:
bem mais simples sem distinct e sub-select... postando e aprendendo...
é por isso q eu adoro este lugar ! :D


GOSTEI 0
Afarias

Afarias

14/06/2004

é por isso q eu adoro este lugar ! :D


eu tb! ;)


T+


GOSTEI 0
Adrinei

Adrinei

14/06/2004

Eu constumo utilizar essa procedure que chamei de ´stat´

CREATE PROCEDURE PRC_STAT
RETURNS (
QTD_REG INTEGER,
TABELA VARCHAR(31))
AS
DECLARE VARIABLE QTDTAB INTEGER = 0;
DECLARE VARIABLE QTDTOT INTEGER = 0;
DECLARE VARIABLE COMANDO VARCHAR(100);
BEGIN
FOR SELECT RDB$RELATION_NAME
FROM RDB$RELATIONS
WHERE RDB$FLAGS=1 AND RDB$VIEW_BLR IS NULL
ORDER BY 1
INTO :TABELA DO
BEGIN
QTDTAB=QTDTAB+1;
COMANDO=´SELECT COUNT(*) FROM ´ || :TABELA;
EXECUTE STATEMENT :COMANDO INTO :QTD_REG;
QTDTOT=:QTDTOT+:QTD_REG;
SUSPEND;
END
TABELA=´Total de tabelas: ´ || :QTDTAB;
QTD_REG=:QTDTOT;
SUSPEND;
END^

Além de ela trazer os nomes, carrega também a quantidade de registros em cada tabela. Abraço.


GOSTEI 0
POSTAR