Frage : Firebird: zu Datenarten aller Felder in den Anwendertabellen erhalten

Gut versuche ich eine Frage wie unten im firebird:

SELECT b.RDB$FIELD_NAME, d.RDB$TYPE_NAME,
c.RDB$FIELD_LENGTH, b.RDB$NULL_FLAG
FROM RDB$RELATIONS a
INNER ANSCHLIESSEN RDB$RELATION_FIELDS b
ON a.RDB$RELATION_NAME = b.RDB$RELATION_NAME
INNER ANSCHLIESSEN RDB$FIELDS c
ON b.RDB$FIELD_SOURCE = c.RDB$FIELD_NAME
INNER ANSCHLIESSEN RDB$TYPES d
ON c.RDB$FIELD_TYPE = d.RDB$TYPE
WHERE a.RDB$SYSTEM_FLAG = 0
r UND d.RDB$FIELD_NAME = „RDB$FIELD_TYPE“ UND b.RDB$RELATION_NAME='tablename'< Br/>ORDER DURCH a.RDB$RELATION_NAME, b.RDB$FIELD_ID


this Frage zurückbringt mich eine Tabelle e, aber nicht total wünsche ich.

I Notwendigkeits-Datenarten der Felder, wie nvarchar (20) oder der ganzen Zahl und der so. Kurz coulmns, die ich benötige, sind

COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE.

When ich eine Frage in den Arten als below

select rdb$type_name von RDB$TYPES

that zurückbringe mich die Arten bilde. Aber ich weiß nicht, was falsch ist, weil ich die Arten nicht als ganze Zahl (int32, int oder GANZE ZAHL) und varchar etc. sehen kann. Auch ich wundere, wie ich alle diese Arten verzeichnen kann. Dank bereits für irgendein help.

Antwort : Firebird: zu Datenarten aller Felder in den Anwendertabellen erhalten

Es verwendet interne datatype Namen.
KURZ für SMALLINT
LANG für GANZE ZAHL
SCHWANKEN für VARCHAR
TEXT für PUTZFRAU

Sie können diese Idee verwenden:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
EINDEUTIGES CAMPOS.RDB$FIELD_NAME ALS COLUMN_NAME VORWÄHLEN, 
FALL 
 WENN DADOSCAMPO.RDB$FIELD_PRECISION > 0 DANN „NUMERISCH“ 
 WENN TIPOS.RDB$TYPE_NAME = „LANG“ DANN „GANZE ZAHL“ 
 WENN TIPOS.RDB$TYPE_NAME = „KURZE“ DANN „SMALLINT“ 
 WENN TIPOS.RDB$TYPE_NAME = „INT64“ DANN „NUMERISCH“ 
 WENN TIPOS.RDB$TYPE_NAME = „UNTERSCHIEDLICHE“ DANN „VARCHAR“ 
 WENN TIPOS.RDB$TYPE_NAME = „TEXT“ DANN „VERKOHLEN“ 
 WENN TIPOS.RDB$TYPE_NAME = „KLECKS-“ DANN „KLECKS SUB_TYPE“ 
   SONST TIPOS.RDB$TYPE_NAME 
 ENDE ALS FIELD_TYPE, 
 FALL 
 WENN DADOSCAMPO.RDB$FIELD_TYPE IN (16.8) DANN DADOSCAMPO.RDB$FIELD_PRECISION 
   SONST DADOSCAMPO.RDB$FIELD_LENGTH 
 ENDE ALS DATA_LENGTH, DADOSCAMPO.RDB$FIELD_SCALE ALS DATA_SCALE, 
 FALL CAMPOS.RDB$NULL_FLAG WENN 1 DANN „N-“ SONST „Y-“ ENDE ALS NULLABLE 
 VON 
   RDB$RELATIONS TABELAS, RDB$RELATION_FIELDS CAMPOS, RDB$FIELDS 
   DADOSCAMPO, RDB$TYPES TIPOS 
 WO TABELAS.RDB$RELATION_NAME = „PESSOAS“ 
   UND TIPOS.RDB$FIELD_NAME = „RDB$FIELD_TYPE“ 
   UND TABELAS.RDB$RELATION_NAME = CAMPOS.RDB$RELATION_NAME 
   UND CAMPOS.RDB$FIELD_SOURCE = DADOSCAMPO.RDB$FIELD_NAME 
   UND DADOSCAMPO.RDB$FIELD_TYPE = TIPOS.RDB$TYPE 
   AUFTRAG DURCH CAMPOS.RDB$FIELD_POSITION
Weitere Lösungen  
 
programming4us programming4us