¡Hola!
Hace un par de años elaboré esta útil vista para tenerla en todas mis bases de datos Firebird. Es una especie de sencillo diccionario de datos. Espero también a ustedes les sea de utilidad.
Código SQL
[-]
CREATE VIEW VWCAMPOS(
TABLA,
CAMPO,
POSICION,
DESCRIPCION,
TIPO,
TAMAO,
DECIMALES,
PERMITENULOS)
AS
Select
RF.RDB$Relation_Name,
RF.RDB$Field_Name,
RF.RDB$Field_Position,
RF.RDB$Description,
Case F.RDB$Field_Type
When 261 Then
Case F.RDB$Field_Sub_Type
When 1 Then 'Texto BLOb'
Else 'BLOb'
End
When 14 Then 'Texto Char'
When 40 Then 'Texto CString'
When 11 Then 'Numérico D_Float'
When 27 Then 'Numérico Double'
When 10 Then 'Numérico Float'
When 16 Then
Case F.RDB$Field_Sub_Type
When 1 Then 'Numérico'
When 2 Then 'Decimal'
Else 'Entero Int64'
End
When 8 Then
Case F.RDB$Field_Sub_Type
When 1 Then 'Numérico'
When 2 Then 'Decimal'
Else 'Entero Integer'
End
When 9 Then 'Quad'
When 7 Then
Case F.RDB$Field_Sub_Type
When 1 Then 'Numérico'
When 2 Then 'Decimal'
Else 'Entero SmallInt'
End
When 12 Then 'Fecha Date'
When 13 Then 'Hora Time'
When 35 Then 'Fecha y hora TimeStamp'
When 37 Then 'Texto Varchar'
End,
Case F.RDB$Field_Type
When 14 Then F.RDB$Field_Length
When 11 Then F.RDB$Field_Precision
When 27 Then F.RDB$Field_Precision
When 10 Then F.RDB$Field_Precision
When 16 Then
Case F.RDB$Field_Sub_Type
When 1 Then F.RDB$Field_Precision
When 2 Then F.RDB$Field_Precision
End
When 8 Then
Case F.RDB$Field_Sub_Type
When 1 Then F.RDB$Field_Precision
When 2 Then F.RDB$Field_Precision
End
When 7 Then
Case F.RDB$Field_Sub_Type
When 1 Then F.RDB$Field_Precision
When 2 Then F.RDB$Field_Precision
End
When 37 Then F.RDB$Character_Length
End,
Case F.RDB$Field_Scale
When 0 Then Null
Else Cast (F.RDB$Field_Scale * -1 As SmallInt)
End,
Case RF.RDB$Null_Flag
When 1 Then 'No'
Else 'Si'
End
From RDB$Relation_Fields RF
Left Join RDB$Fields F On RF.RDB$Field_Source = F.RDB$Field_Name
Where RF.RDB$System_Flag = 0
;
Un abrazo vistoso.
Al González.