在libreoffice中运行嵌入式firebird sql查询时出现问题

9jyewag0  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(381)

我尝试在libreoffice中运行以下firebird sql查询,其中嵌入了firebird:

SELECT RDB$GET_CONTEXT('SYSTEM', 'ENGINE_VERSION')  AS "VERSION" 
FROM "RDB$DATABASE";

我明白了 Syntax error in SQL statement . 有人能告诉我我做错了什么吗?这在flamerobin中有效,但在libreoffice中无效。

iq3niunx

iq3niunx1#

错误“syntax error in sql statement”是一个hsqldb错误。因此,首先,确保您的libreoffice基本项目实际上是作为firebird嵌入式项目创建的。
我能够用firebird嵌入式项目重现libreofficebase6.4.4.2中的错误。看起来libreoffice首先尝试使用hsqldb解析查询(可能是为了能够将hsqldb语法转换为firebird语法),然后才将其转发给firebird。
错误的原因是 $RDB$GET_CONTEXT 在hsqldb sql语法中,它不是无引号对象名中的有效字符,而在firebird sql语法中它是有效的。通常,双引号引用特定的对象名可以解决这个问题,但是 RDB$GET_CONTEXT 实际上不是一个函数,而是一个语法构造,所以不能在firebird中引用它。
要执行此查询,需要在sql视图中启用“直接运行sql命令”选项,可以在“编辑”>“直接运行sql命令”下,也可以使用工具栏中的“直接运行sql命令”按钮(带有 >_ ).

相关问题