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;
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
Curtir tópico
+ 0
Responder
Posts
21/03/2014
Thiago Irrazabal
Boa tarde, segue o sql com o campo e o join adicionados.
Att,
Thiago Irrazabal de Oliveira.
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
Clique aqui para fazer login e interagir na Comunidade :)