Я стану профессионалом!
Вступай в ряды Russian Oracle Network, прямо сейчас!
Вход пользователей
Пользователь:

Пароль:

Запомнить меня
Анонимно

Забыли пароль?

Регистрация
Основное меню
Russian Oracle Network Forums -> Создание дирректории в ОС от ORACLE


  Reply to this topicStart new topic

> Создание дирректории в ОС от ORACLE, не понятно как повлиять на русские буквы
dzerjinsky
Отправлено: Jan 12 2010, 11:58
Quote Post


Новичок
*

Группа: Members
Сообщений: 3
Пользователь ?: 1911
Регистрация: 12-January 10



Коллеги, не могу побороть... Проблема в следующем:
Есть задача периодически создавать от oracle-server папки в операционной системе (Windows). Папки называются на русском. Названия бирутся из созданной таблички. Через SQL все названия отображаются корректно.

Создаю job типа executable

dbms_scheduler.create_job(
job_name => 'apex_job1'
,job_action => 'cmd /q /c mkdir '||dir_name
,job_type => 'executable'
,enabled => false
);
dbms_scheduler.enable('apex_job1');


dir_name - считанное из таблицы поле на русском языке.

В Файловоой системе получаю всякую тарабарщину.
Подобрать кодировку и перекодировать с помощью convert так и не смог

V$NLS_PARAMETERS такие:

PARAMETER VALUE

NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_CHARACTERSET AL32UTF8
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE

Подскажите, может вообще не там копаю?...

PM
Top
dzerjinsky
Отправлено: Jan 13 2010, 12:42
Quote Post


Новичок
*

Группа: Members
Сообщений: 3
Пользователь ?: 1911
Регистрация: 12-January 10



Всё, поборол бонально....

Вот полный текст процедуры

procedure make_directory(p_dirname varchar2) IS
pragma autonomous_transaction;
begin
dbms_scheduler.create_job(
job_name => 'apex_job1'
,job_action => 'cmd /q /c mkdir '||convert(v_base_dir||p_dirname||' ','CL8MSWIN1251')
,job_type => 'executable'
,enabled => false
);
dbms_scheduler.enable('apex_job1');
end make_directory;

Проблема в моей невнимательности... когда смотрел доку по convert перепутал
source_code_page и dest_code_page. По привычке слева направо (source - dest), но в convert почему то наоборот.

И еще convert почему то последний символ строки режет, по этому пришлось
добавить ||' '

И еще... непонятно почему, но в результате получается строка в DOS-кодировке. Мне то как раз это и нужно было, так как объекты файловой системы создаю, но для порядку был бы признателен, если кто пояснит, почему так происходит
PM
Top
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Topic Options Reply to this topicStart new topic

 

Russian Oracle Network, Copyright © 2005-2010 by Zlygostev Anton