Кодировка символов Oracle - PullRequest
3 голосов
/ 16 мая 2011

У меня MVIEW на сервере DEV как

CREATE MATERIALIZED VIEW MY_MVIEW
AS
SELECT  col1 AS "N° INVOICE" from TABLE

MVIEW установлен на сервере PROD, и когда я проверяю его запрос, у меня появляется символ ° не распознан

SELECT query from user_mviews where mview_name = 'MY_MVIEW' ;

QUERY
---------------------------------------
SELECT  col1 AS "N? INVOICE" from TABLE

мы используем Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production для обеих сред.

Есть идеи, почему это произошло и как это исправить? или мне нужно переименовать мой псевдоним?

Ответы [ 2 ]

5 голосов
/ 16 мая 2011

Всякий раз, когда вы видите знак вопроса вместо специального символа, это означает, что набор символов клиента не поддерживает этот символ, и преобразование было недоступно.

Преобразование происходит с набором символов базы данных в качестве источникаи символ клиента, установленный в качестве цели.Переменная окружения NLS_LANG позволяет управлять набором символов клиента.NLS_LANG должен быть установлен до открытия соединения, и его нельзя изменить во время сеанса.

Для получения дополнительной информации о NLS_LANG см. Руководство по поддержке глобализации баз данных Oracle®

Кстати, NLS_LANGUAGE не имеет ничего общего с набором символов!Он только контролирует язык, используемый в сообщениях сервера и настройках локали.

4 голосов
/ 16 мая 2011

Я бы определенно рекомендовал переименовать ваш псевдоним во что-то простое, например NO_INVOICE, которое не содержит каких-либо необычных символов и не нуждается в двойных кавычках для ссылки. Неправильно обрабатывать имена столбцов, как если бы они были отформатированными заголовками для отчетов. Сделайте это в отчете. С такими нестандартными символами у вас будут проблемы с различными настройками среды, такими как NLS_LANG.

...