我尝试在libreoffice中运行以下firebird sql查询,其中嵌入了firebird:
SELECT RDB$GET_CONTEXT('SYSTEM', 'ENGINE_VERSION') AS "VERSION"
FROM "RDB$DATABASE";
我明白了 Syntax error in SQL statement
. 有人能告诉我我做错了什么吗?这在flamerobin中有效,但在libreoffice中无效。
我尝试在libreoffice中运行以下firebird sql查询,其中嵌入了firebird:
SELECT RDB$GET_CONTEXT('SYSTEM', 'ENGINE_VERSION') AS "VERSION"
FROM "RDB$DATABASE";
我明白了 Syntax error in SQL statement
. 有人能告诉我我做错了什么吗?这在flamerobin中有效,但在libreoffice中无效。
1条答案
按热度按时间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命令”按钮(带有
>_
).