Fråga : Firebird: att att få datatyper sätter in allra i användare bordlägger

Försök för brunn i en query som nedanför i firebird:

SELECT b.RDB$FIELD_NAME, d.RDB$TYPE_NAME,
c.RDB$FIELD_LENGTH, a
INNER för b.RDB$NULL_FLAG
FROM RDB$RELATIONS SAMMANFOGAR RDB$RELATION_FIELDS-b
ON a.RDB$RELATION_NAME = b.RDB$RELATION_NAME
INNER SAMMANFOGAR RDB$FIELDS-c
ON b.RDB$FIELD_SOURCE = c.RDB$FIELD_NAME
INNER SAMMANFOGAR RDB$TYPES-d
ON c.RDB$FIELD_TYPE = d.RDB$TYPE
WHERE a.RDB$SYSTEM_FLAG = 0
, OCH d.RDB$FIELD_NAME = ”RDB$FIELD_TYPE-” OCH för b.RDB$RELATION_NAME='tablename'< br/>ORDER VID a.RDB$RELATION_NAME, query för b.RDB$FIELD_ID


this går mig tillbaka en bordlägga, men inte totalt jag önskar. för behovsdata för

I typer av sätter in som nvarchar (20) eller heltal och sådan. Kort coulmns som jag behöver, är

COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE.

When jag gör en query i typer som below

select rdb$type_name från RDB$TYPES

that går mig tillbaka typerna. Men jag vet inte vad är fel, därför att jag inte kan se typerna, som heltalet (int32, int eller HELTAL) och varchar Etc. också jag undrar hur jag kan lista alla dessa typer. Tack redan för någon help.
" klar "

Svar : Firebird: att att få datatyper sätter in allra i användare bordlägger

Det använder inre datatype namnger.
KORT STAVELSE för SMALLINT
LONG för HELTAL
VARIERANDE för VARCHAR
TEXT för RÖDING

Du kan använda denna idé:
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:
VÄLJ DISTINKT CAMPOS.RDB$FIELD_NAME SOM COLUMN_NAME, 
FALL 
 NÄR DADOSCAMPO.RDB$FIELD_PRECISION > ”NUMERISK” 0 DÄREFTER, 
 NÄR TIPOS.RDB$TYPE_NAME = ”LONG” DÄREFTER ”HELTAL”, 
 NÄR TIPOS.RDB$TYPE_NAME = ”KORT STAVELSE” DÄREFTER ”SMALLINT”, 
 NÄR TIPOS.RDB$TYPE_NAME = ””NUMERISK” INT64” DÄREFTER, 
 NÄR TIPOS.RDB$TYPE_NAME = ”VARIERANDE” DÄREFTER ”VARCHAR”, 
 NÄR TIPOS.RDB$TYPE_NAME = ”TEXT BRÄNNER TILL KOL” DÄREFTER ””, 
 NÄR TIPOS.RDB$TYPE_NAME = ”KLICK SUB_TYPE” ”FÖR KLICK” DÄREFTER, 
   ANNAN TIPOS.RDB$TYPE_NAME 
 AVSLUTA SOM FIELD_TYPE, 
 FALL 
 NÄR DADOSCAMPO.RDB$FIELD_TYPE I (16.8) DÄREFTER DADOSCAMPO.RDB$FIELD_PRECISION 
   ANNAN DADOSCAMPO.RDB$FIELD_LENGTH 
 AVSLUTA SOM DATA_LENGTH, DADOSCAMPO.RDB$FIELD_SCALE SOM DATA_SCALE, 
 CASE CAMPOS.RDB$NULL_FLAG, NÄR 1 ”N” ANNAT ”Y” AVSLUTAR DÄREFTER SOM NULLABLE 
 FRÅN 
   RDB$RELATIONS TABELAS, RDB$RELATION_FIELDS CAMPOS, RDB$FIELDS 
   DADOSCAMPO RDB$TYPES TIPOS 
 VAR TABELAS.RDB$RELATION_NAME = ”PESSOAS”, 
   OCH TIPOS.RDB$FIELD_NAME = ”RDB$FIELD_TYPE”, 
   OCH TABELAS.RDB$RELATION_NAME = CAMPOS.RDB$RELATION_NAME 
   OCH CAMPOS.RDB$FIELD_SOURCE = DADOSCAMPO.RDB$FIELD_NAME 
   OCH DADOSCAMPO.RDB$FIELD_TYPE = TIPOS.RDB$TYPE 
   BESTÄLLA VID CAMPOS.RDB$FIELD_POSITION
Andra lösningar  
 
programming4us programming4us