获取存储过程参数类型

发布于 2024-08-12 19:51:02 字数 97 浏览 4 评论 0原文

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

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

I need to read the stored procedures' parameters type in Firebird database.

I'm able to read their name, if they are input or output parameters, but where can I get their type? Or how do you solve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

街角卖回忆 2024-08-19 19:51:02

您需要使用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 Language Reference 了解有关这些类型定义的更多信息。

You need to use the combination of the RDB$PROCEDURE_PARAMETERS and RDB$FIELDS views, as shown below:

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

The field type values in RDB$FIELDS are defined as follows:

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

See the Interbase Language Reference for more info on these type definitions.

冷血 2024-08-19 19:51:02
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
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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文