Ottieni il tipo di parametri della procedura memorizzata
-
22-07-2019 - |
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?
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