Domanda

Devo leggere il tipo di parametri delle procedure memorizzate nel database Firebird.

Sono in grado di leggere il loro nome, se sono parametri di input o output, ma dove posso ottenere il loro tipo? O come lo risolvi?

È stato utile?

Soluzione

Devi utilizzare la combinazione delle viste RDB $ PROCEDURE_PARAMETERS e RDB $ FIELDS , come mostrato di seguito:

SELECT rdb$procedure_name, rdb$procedure_parameters.rdb$parameter_name, 
    rdb$fields.rdb$field_name, rdb$fields.rdb$field_type 
FROM rdb$procedure_parameters, rdb$fields 
WHERE rdb$fields.rdb$field_name = rdb$procedure_parameters.rdb$field_source

I valori del tipo di campo in RDB $ FIELDS sono definiti come segue:

BLOB - 261
CHAR - 14
CSTRING - 40
D_FLOAT - 11
DOUBLE - 27
FLOAT - 10
INT64 - 16
INTEGER - 8
QUAD - 9
SMALLINT - 7
DATE - 12
TIME - 13
TIMESTAMP - 35
VARCHAR - 37

Vedi l'Interbase Language Reference per maggiori informazioni su queste definizioni di tipi.

Altri suggerimenti

SELECT rdb$procedure_name, 
       rdb$procedure_parameters.rdb$parameter_name, 
       rdb$fields.rdb$field_name, 
       rdb$fields.rdb$field_type, 
       CASE rdb$fields.RDB$FIELD_TYPE 
           WHEN 7 THEN 'SMALLINT' 
           WHEN 8 THEN 'integer' 
           WHEN 9 THEN 'QUAD' 
           WHEN 10 THEN 'FLOAT' 
           WHEN 11 THEN 'D_FLOAT' 
           WHEN 12 THEN 'DATE' 
           WHEN 13 THEN 'TIME' 
           WHEN 14 THEN 'CHAR' 
           WHEN 16 THEN 'INT64' 
           WHEN 27 THEN 'DOUBLE' 
           WHEN 35 THEN 'TIMESTAMP' 
           WHEN 37 THEN 'VARCHAR' 
           WHEN 40 THEN 'CSTRING' 
           WHEN 261 THEN 'BLOB' 
       END AS FIELD_TYPE 
FROM rdb$procedure_parameters, 
     rdb$fields 
WHERE rdb$fields.rdb$field_name = rdb$procedure_parameters.rdb$field_source
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top