Questione : Firebird: per per ottenere i tipi di dati di tutti i campi in tabelle di utente

Provo bene una domanda come sotto in firebird: il

SELECT b.RDB$FIELD_NAME, d.RDB$TYPE_NAME,
c.RDB$FIELD_LENGTH, a
INNER di b.RDB$NULL_FLAG
FROM RDB$RELATIONS UNISCE il b
ON di RDB$RELATION_FIELDS a.RDB$RELATION_NAME = b.RDB$RELATION_NAME
INNER UNISCE il c
ON di RDB$FIELDS b.RDB$FIELD_SOURCE = c.RDB$FIELD_NAME
INNER UNISCE il d
ON di RDB$TYPES c.RDB$FIELD_TYPE = d.RDB$TYPE
WHERE a.RDB$SYSTEM_FLAG = 0
E d.RDB$FIELD_NAME = Br/>ORDER di b.RDB$RELATION_NAME='tablename'< da a.RDB$RELATION_NAME, domanda di b.RDB$FIELD_ID


this lo restituisce una tabella ma non completamente voglio. tipi di dati di bisogno del

I dei campi come nvarchar (20) o numero intero e tali. Presto i coulmns che ho bisogno di sono

COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE.

When faccio una domanda nei tipi come below

select rdb$type_name da RDB$TYPES

that lo restituisco i tipi. Ma non conosco che cosa è errato, perché non posso vedere i tipi come il numero intero (int32, int o NUMERO INTERO) ed ecc. varchar. Inoltre mi domando come posso elencare tutti questi tipi. Ringraziamenti già per qualsiasi help.
class= del

Risposta : Firebird: per per ottenere i tipi di dati di tutti i campi in tabelle di utente

Usa i nomi interni del datatype.
BICCHIERINO per SMALLINT
LUNGAMENTE per il NUMERO INTERO
VARIANDO per VARCHAR
TESTO per il CARBONE

Potete usare questa idea:
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:
SELEZIONARE CAMPOS.RDB$FIELD_NAME DISTINTO COME COLUMN_NAME, 
CASO 
 QUANDO DADOSCAMPO.RDB$FIELD_PRECISION > 0 ALLORA “NUMERICO„ 
 QUANDO TIPOS.RDB$TYPE_NAME = “LUNGAMENTE„ ALLORA “NUMERO INTERO„ 
 QUANDO TIPOS.RDB$TYPE_NAME = “BICCHIERINO„ ALLORA “SMALLINT„ 
 QUANDO TIPOS.RDB$TYPE_NAME = “INT64„ ALLORA “NUMERICO„ 
 QUANDO TIPOS.RDB$TYPE_NAME = “VARIANTI„ ALLORA “VARCHAR„ 
 QUANDO TIPOS.RDB$TYPE_NAME = “TESTO„ ALLORA “SI CARBONIZZANO„ 
 QUANDO TIPOS.RDB$TYPE_NAME = “CHIAZZA SUB_TYPE„ “DELLA CHIAZZA„ ALLORA 
   TIPOS.RDB$TYPE_NAME ALTRO 
 ESTREMITÀ COME FIELD_TYPE, 
 CASO 
 QUANDO DADOSCAMPO.RDB$FIELD_TYPE (16.8) ALLORA IN DADOSCAMPO.RDB$FIELD_PRECISION 
   DADOSCAMPO.RDB$FIELD_LENGTH ALTRO 
 ESTREMITÀ COME DATA_LENGTH, DADOSCAMPO.RDB$FIELD_SCALE COME DATA_SCALE, 
 CASO CAMPOS.RDB$NULL_FLAG QUANDO 1 ALLORA ESTREMITÀ ALTRA “DI Y„ “DI N„ COME NULLABLE 
 DA 
   RDB$RELATIONS TABELAS, RDB$RELATION_FIELDS CAMPOS, RDB$FIELDS 
   DADOSCAMPO, RDB$TYPES TIPOS 
 DOVE TABELAS.RDB$RELATION_NAME = “PESSOAS„ 
   E TIPOS.RDB$FIELD_NAME = “RDB$FIELD_TYPE„ 
   E TABELAS.RDB$RELATION_NAME = CAMPOS.RDB$RELATION_NAME 
   E CAMPOS.RDB$FIELD_SOURCE = DADOSCAMPO.RDB$FIELD_NAME 
   E DADOSCAMPO.RDB$FIELD_TYPE = TIPOS.RDB$TYPE 
   ORDINE DA CAMPOS.RDB$FIELD_POSITION
Altre soluzioni  
 
programming4us programming4us