Проблема с запуском встроенного запроса firebird sql в LibreOffice - PullRequest
1 голос
/ 05 августа 2020

Я пытаюсь запустить следующий запрос Firebird SQL в LibreOffice, в который встроен Firebird:

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

Я получаю сообщение Syntax error in SQL statement. Может ли кто-нибудь сказать мне, что я делаю не так? Это работает в FlameRobin, но не в LibreOffice.

1 Ответ

0 голосов
/ 05 августа 2020

Ошибка «Синтаксическая ошибка в SQL заявлении» - это ошибка HSQLDB. Итак, сначала убедитесь, что ваш проект LibreOffice Base действительно создан как проект Firebird Embedded.

Мне удалось воспроизвести ошибку в LibreOffice Base 6.4.4.2 с помощью проекта Firebird Embedded. Похоже, LibreOffice сначала пытается проанализировать запрос с помощью HSQLDB (вероятно, чтобы иметь возможность преобразовать синтаксис HSQLDB в синтаксис Firebird), и только затем перенаправляет его в Firebird.

Причина ошибки - $ в RDB$GET_CONTEXT, который не является допустимым символом в имени объекта без кавычек в синтаксисе HSQLDB SQL, в то время как он допустим в синтаксисе Firebird SQL. Обычно двойное цитирование имени объекта c решает эту проблему, но RDB$GET_CONTEXT на самом деле не функция, а синтаксическая конструкция, поэтому его нельзя заключить в кавычки в Firebird.

Чтобы иметь возможность для выполнения этого запроса необходимо включить параметр «Выполнить SQL команду напрямую» в представлении SQL либо в разделе «Правка»> «Выполнить SQL команду напрямую», либо с помощью кнопки «Выполнить SQL команду напрямую» на панели инструментов (значок базы данных с >_).

...