使用SQL确定Firebird版本(版本<2.1)

时间:2015-07-24 13:02:04

标签: firebird

我有一个应用程序来处理各个位置的数据库,我想构建一个检查,使用Firebird 2.5或更高版本打开这些数据库。我们最近从Firebird 2.0迁移到2.5,我们有很多数据库可以响应

select rdb$get_context('SYSTEM','ENGINE_VERSION') as "version" from RDB$DATABASE

使用&#39; SQL错误代码= -804函数未知RDB $ GET_CONTEXT。我猜是因为它们是用Firebird 2.0构建的 - 重建为2.5固定它。

有没有办法检测哪些火鸟服务正在使用哪些可以应用于2.1以上的数据库?

1 个答案:

答案 0 :(得分:4)

您的客户或连接API可以告诉您吗?例如,isql's SHOW VERSION或DBD :: Firebird的ib_database_info

如果没有,只要想出来,就要探索从最近到最古老的功能。请注意ENGINE_VERSION support was introduced in 2.1,所以检查的内容不多:

SELECT rdb$get_context('SYSTEM','ENGINE_VERSION')... -- ENGINE_VERSION >= 2.1
SELECT * FROM (SELECT ...) fb20;                     -- derived table -> FB 2.0
SELECT "fb15" FROM rdb$database WITH LOCK;           -- LOCK -> FB 1.5
SELECT FIRST ...                                     -- FIRST -> FB 1.0
else abort()                                         -- prehistoric?