我正试图在LibreOffice中运行以下Firebird SQL查询,该查询已嵌入Firebird:
SELECT RDB$GET_CONTEXT('SYSTEM', 'ENGINE_VERSION') AS "VERSION"
FROM "RDB$DATABASE";
我收到消息Syntax error in SQL statement
。有人能告诉我我做错了什么吗?这在FlameRobin中有效,但在LibreOffice中无效。
错误"SQL语句中的语法错误">是HSQLDB错误。因此,首先,确保您的LibreOfficeBase项目实际上是作为FirebirdEmbedded项目创建的。
我能够用Firebird Embedded项目重现LibreOffice Base 6.4.4.2中的错误。看起来LibreOffice首先尝试使用HSQLDB解析查询(可能能够将HSQLDB语法转换为Firebird语法(,然后才将其转发给Firebird。
错误的原因是RDB$GET_CONTEXT
中的$
不是HSQLDB SQL语法中未引用对象名称中的有效字符,而在Firebird SQL语法中是有效字符。通常,对特定对象名称进行双引号引用可以解决此问题,但RDB$GET_CONTEXT
实际上不是一个函数,而是一个语法构造,因此它不能在Firebird中引用。
为了能够执行此查询,您需要在SQL视图中的"编辑>"下启用"直接运行SQL命令"选项"直接运行SQL命令",或使用工具栏中的"直接运行SQL命令"按钮(带有>_
的数据库图标(。