Навчимо sqlplus говорити по-російськи

Довго не міг зрозуміти, чому люди не люблять користуватися SQL * Plus.

Виявляється: інтерфейс убогий і безглуздий.

Словом, чи не графічний - мишкою ткнути не куди (значить інтуїтивно не зрозуміло).

рідко зустрінеш кодера, який вміє мишкою воять SELECT'и.

Хоча, погоджуся, що у SQL * Plus є грішки.

Один з них - часом SQL * Plus не розуміє російську мову.

Наприклад, деякі зіткнулися з наступною заморочки.

І як би все добре.

Як би не те, що хотілося. Комфортно працювати дійсно неможливо.

Почнемо з того, що під час установки оракла до реєстру прописується параметр NLS_LANG:

Дивимося на значення цього параметра (від знаку одно до кінця рядка). Значення складається з двох частин.

Значення першої частини, яка до точки, я детально пояснював, коли розповідав про використання типу DATE. Друга частина, що стоїть після крапки, задає кодування символів, яка використовується на клієнтському комп'ютері. У цьому кодуванні ви вводите команди і в ній же отримуєте від оракла результат.

Якщо ви сидите за комп'ютером, на якому розгорнута оракловая база, то знайте, що клієнтський софт у вас вже встановлений (параметр прописаний в реєстрі) і при роботі з Оракл ви активно використовуєте цей софт. Оракловий клієнт однаково працює і на віддаленій машині, і на сервері.

Звертаю увагу на 2 моменти:

  1. Кодування бази даних задається в параметрах бази, а не в клієнтському софт, який встановлений на сервер.
  2. Кодування, яка використовується в базі даних, може відрізнятися від кодування на клієнті.

Якщо ви працює в звичайному російській конторі, то використовуйте кодування CL8MSWIN1251.

Чому SQL * Plus пише кракозябри?

Відразу скажу, що не всі версії SQL * Plus пишуть кракозябри.

Пише кракозябри тільки консольна версія Windows. Виконуваний файл називається SQLPLUS.EXE

Цієї версії і належить так себе вести. Оскільки консоль Windows використовує кодування RU866 (вона підтримується для того, щоб можна було запускати старі dos-програми), то плюс, будучи консольним додатком, повинен підтримувати цю кодування.

Тут виникає протиріччя: оракловий клієнт працює з кодуванням, яка задана параметром NLS_LANG, а консольний SQL * Plus в RU866.

Коли в "Блокноті" набрані російські слова в кодуванні CL8MSWIN1251, то SQL * Plus буде їх виводити на екран кракозябрами в кодуванні RU866.

Це звичайна ситуація. Хоча бувають і інші варіанти. І є ще кілька нюансів. Заради простоти забудемо про них.

Щоб змусити SQL * Plus "говорити по-російськи" робіть так:


  1. Створіть ось такий командний файл Windows (текстовий файл з розширенням cmd):
  1. Збережіть його куди-небудь в робочу папку і дайте, наприклад, ім'я starter.cmd
  1. Зробіть на нього ярлик.
  1. Відкрийте властивості ярлика і встановіть шрифт сімейства Lucida.

Тепер, коли вам потрібен буде SQL * Plus, запускайте його через створений ярлик.

До речі, є ще версія SQL * Plus for Windows - звичайне віконне додаток Windows. Ця версія добре розуміє російську мову. Виконуваний файл називається SQLPLUSW .EXE

У дистрибутиві XE його немає (шукав - не знайшов). Щоб встановити SQL * Plus for Windows потрібно мати повноцінний дистрибутив ораклового клієнта. У мене, наприклад, завжди під рукою перевірений від версії 9.2. Звідти його і ставлю.

Схожі статті