Fórum UMA AJUDA PARA REMONTAR SELECT #473445

20/03/2014

0

OLA, PRECISO DE UMA AJUDA PARA REMONTAR O SELECT ABAIXO.
O QUE PRECISO É SÓ ACRESCENTAR UMA COLUNA QUE IDENTIFICA SE O CAMPO É UMA CHAVE PRIMARIA OU NÃO.

SELECT DISTINCT R.RDB$FIELD_NAME AS Nome_Campo,
R.RDB$DESCRIPTION AS Descricao_Campo,
R.RDB$DEFAULT_VALUE AS Valor_Padrao_Campo,
CASE R.RDB$NULL_FLAG
WHEN 1 THEN 'SIM'
ELSE 'NAO'
END AS Restricao_NotNull_Campo,
F.RDB$FIELD_LENGTH AS Tamanho_Campo,
F.RDB$FIELD_PRECISION AS Precisao_Campo,
F.RDB$FIELD_SCALE AS Escala_Campo,
CASE F.RDB$FIELD_TYPE
WHEN 7 THEN 'SMALLINT'
WHEN 8 THEN 'INTEGER'
WHEN 9 THEN 'QUAD'
WHEN 10 THEN 'FLOAT'
WHEN 11 THEN 'DECIMAL'
WHEN 12 THEN 'DATE'
WHEN 13 THEN 'TIME'
WHEN 14 THEN 'CHAR'
WHEN 16 THEN 'NUMERIC'
WHEN 27 THEN 'DOUBLE'
WHEN 35 THEN 'TIMESTAMP'
WHEN 37 THEN 'VARCHAR'
WHEN 40 THEN 'CSTRING'
WHEN 261 THEN 'BLOB'
ELSE 'UNKNOWN'
END AS Tipo_Campo,
F.RDB$FIELD_SUB_TYPE AS SubTipo_Campo,
CSET.RDB$CHARACTER_SET_NAME AS CHARSET_Campo
FROM RDB$RELATION_FIELDS R
LEFT JOIN RDB$FIELDS F ON R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME
LEFT JOIN RDB$COLLATIONS COLL ON F.RDB$COLLATION_ID = COLL.RDB$COLLATION_ID
LEFT JOIN RDB$CHARACTER_SETS CSET ON F.RDB$CHARACTER_SET_ID = CSET.RDB$CHARACTER_SET_ID
WHERE R.RDB$RELATION_NAME =:wtabela
ORDER BY R.RDB$FIELD_POSITION;
Wilton Júnior

Wilton Júnior

Responder

Posts

21/03/2014

Thiago Irrazabal

Boa tarde, segue o sql com o campo e o join adicionados.

SELECT DISTINCT R.RDB$FIELD_NAME AS Nome_Campo,
R.RDB$DESCRIPTION AS Descricao_Campo,
R.RDB$DEFAULT_VALUE AS Valor_Padrao_Campo,
CASE R.RDB$NULL_FLAG
WHEN 1 THEN 'SIM'
ELSE 'NAO'
END AS Restricao_NotNull_Campo,
F.RDB$FIELD_LENGTH AS Tamanho_Campo,
F.RDB$FIELD_PRECISION AS Precisao_Campo,
F.RDB$FIELD_SCALE AS Escala_Campo,
CASE F.RDB$FIELD_TYPE
WHEN 7 THEN 'SMALLINT'
WHEN 8 THEN 'INTEGER'
WHEN 9 THEN 'QUAD'
WHEN 10 THEN 'FLOAT'
WHEN 11 THEN 'DECIMAL'
WHEN 12 THEN 'DATE'
WHEN 13 THEN 'TIME'
WHEN 14 THEN 'CHAR'
WHEN 16 THEN 'NUMERIC'
WHEN 27 THEN 'DOUBLE'
WHEN 35 THEN 'TIMESTAMP'
WHEN 37 THEN 'VARCHAR'
WHEN 40 THEN 'CSTRING'
WHEN 261 THEN 'BLOB'
ELSE 'UNKNOWN'
END AS Tipo_Campo,
F.RDB$FIELD_SUB_TYPE AS SubTipo_Campo,
CSET.RDB$CHARACTER_SET_NAME AS CHARSET_Campo,
C.RDB$CONSTRAINT_TYPE AS Constraint_Campo
FROM RDB$RELATION_FIELDS R
LEFT JOIN RDB$FIELDS F ON R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME
LEFT JOIN RDB$COLLATIONS COLL ON F.RDB$COLLATION_ID = COLL.RDB$COLLATION_ID
LEFT JOIN RDB$CHARACTER_SETS CSET ON F.RDB$CHARACTER_SET_ID = CSET.RDB$CHARACTER_SET_ID
LEFT JOIN RDB$INDEX_SEGMENTS I ON I.RDB$FIELD_NAME = R.RDB$FIELD_NAME
LEFT JOIN RDB$RELATION_CONSTRAINTS C ON C.RDB$RELATION_NAME = R.RDB$RELATION_NAME AND I.RDB$INDEX_NAME = C.RDB$INDEX_NAME
WHERE R.RDB$RELATION_NAME = :WTABELA
ORDER BY R.RDB$FIELD_POSITION;




Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

24/03/2014

Wilton Júnior

Tiago deu certo obrigado.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar