获取存储过程参数的类型

时间:2009-12-01 11:46:49

标签: stored-procedures types firebird

我需要在Firebird数据库中读取存储过程的参数类型。

我能够读取他们的名字,如果他们是输入或输出参数,但我在哪里可以得到他们的类型?或者你是如何解决这个问题的?

2 个答案:

答案 0 :(得分:8)

您需要使用RDB$PROCEDURE_PARAMETERSRDB$FIELDS视图的组合,如下所示:

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

RDB $ FIELDS中的字段类型值定义如下:

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

有关这些类型定义的详细信息,请参阅Interbase语言参考。

答案 1 :(得分:-1)

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