2016-06-02 2 views
0

При запуске модульных тестов с использованием HSQL появляется следующая ошибка.Ошибка выброса HSQL (Hypersonic SQL) при использовании NLSSORT

Причина: java.sql.SQLSyntaxErrorException: пользователь не имеет привилегий или объект не найден: NLSSORT; плохая грамматика SQL []; вложенное исключение java.sql.SQLSyntaxErrorException: пользователь не имеет привилегий или объект не найдено: NLSSORT

Я выбрал использовать для оракула диалекта в конфигурациях HSQL, которые работают хорошо для других конкретных запросов Oracle.

Вот запрос, который терпит неудачу;

select COUNTRY_CODE, COUNTRY_E_DESC 

       from COUNTRY 

       order by nlssort(COUNTRY_E_DESC ,'NLS_SORT=BINARY_AI') 

Есть ли другая конфигурация, мне нужно настроить, чтобы HSQL использовал NLSSORT?

ответ

0

NLSSORT исходит из MySql, и это проприетарный синтаксис.
Он не поддерживается всей базой данных в мире.


Обратитесь к документации HSQL:
http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_ordering

<order by clause> ::= ORDER BY <sort specification> [ { <comma> <sort specification> }... ] 
<sort specification> ::= <value expression> [ <collate clause> ] [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ] 

, а затем:

<collate clause> ::= COLLATE <collation name> 

Пример из документации:

SELECT id, lastname FROM customer ORDER BY lastname COLLATE "English" 

Использование COLLATE вместо NLSSORT

Смежные вопросы