Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как правильно определить десятичный разделитель?  [new]
Max Pro
Member

Откуда: планета Сатурн, межгалактическая станция №999
Сообщений: 2776
Картинка с другого сайта.
(помогите чайнику)
Пока что у меня такой вариант вышел:
DECLARE
	a_decimal_point Varchar2(4000);
BEGIN
	/*ORA-06502: PL/SQL: : ошибка преобразования символа в число ошибка числа или значения.*/
	DECLARE
		d Number;
		ora_06502 EXCEPTION;
		PRAGMA EXCEPTION_INIT(ora_06502,-6502);
	BEGIN
		d:=To_number('3.14');
		a_decimal_point:='.';
	EXCEPTION
		WHEN ora_06502 THEN a_decimal_point:=',';
	END;
END;
P.S. 10g
29 июл 11, 18:23    [11046936]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно определить десятичный разделитель?  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
select * from V$parameter
where name = 'nls_numeric_characters'
29 июл 11, 18:26    [11046946]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно определить десятичный разделитель?  [new]
Max Pro
Member

Откуда: планета Сатурн, межгалактическая станция №999
Сообщений: 2776
Vint
select * from V$parameter
where name = 'nls_numeric_characters'

Спасибо, Винт, что так быстро откликнулся. Я выполнил твой селект. Вот результат - см. влож. рис. - рекордсет содержит единственную строку.
P.S. что теперь дальше-то делать? А то я чайник, не понимаю ничего.

К сообщению приложен файл. Размер - 12Kb
29 июл 11, 18:42    [11046985]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно определить десятичный разделитель?  [new]
gav-m
Member

Откуда: прибайкалье
Сообщений: 117
А вот дилетант сделал бы так:
select substr(to_char(1/2,'FM90D9'),2,1) from dual;
30 июл 11, 04:56    [11048089]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно определить десятичный разделитель?  [new]
-2-
Member

Откуда:
Сообщений: 15330
nls_session_parameters[name='NLS_NUMERIC_CHARACTRES'].value
30 июл 11, 15:38    [11048413]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно определить десятичный разделитель?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54391
gav-m
А вот дилетант сделал бы так:
select substr(to_char(1/2,'FM90D9'),2,1) from dual;
я примерно так и сделал - в 2003-м
тот кусок работает до сих пор
:)
30 июл 11, 16:54    [11048521]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно определить десятичный разделитель?  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10051
Max Pro
что теперь дальше-то делать?


SQL> column session_decimal_separator format a25
SQL> column session_group_separator format a25
SQL> select substr(value,1,1) session_decimal_separator,
  2         substr(value,2,1) session_group_separator
  3    from  nls_session_parameters
  4    where parameter = 'NLS_NUMERIC_CHARACTERS'
  5  /

SESSION_DECIMAL_SEPARATOR SESSION_GROUP_SEPARATOR
------------------------- -------------------------
.                         ,

SQL> alter session set nls_numeric_characters=',.'
  2  /

Session altered.

SQL> select substr(value,1,1) session_decimal_separator,
  2         substr(value,2,1) session_group_separator
  3    from  nls_session_parameters
  4    where parameter = 'NLS_NUMERIC_CHARACTERS'
  5  /

SESSION_DECIMAL_SEPARATOR SESSION_GROUP_SEPARATOR
------------------------- -------------------------
,                         .

SQL> 

SY.
30 июл 11, 17:12    [11048544]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно определить десятичный разделитель?  [new]
Max Pro
Member

Откуда: планета Сатурн, межгалактическая станция №999
Сообщений: 2776
SY,

Мне твой вариант больше понравился, но насторожило это:
Substr(value,1,1)
Этот сабстринг испортил всё настроение, по-хорошему разделители должны храниться по отдельности. Неужели, думаю, разработчики Оракла такие дураки.
Решил проверить. Включил SQL*plus и взял там следующий запрос - см. влож. рис.
Что ж, похоже на правду. Разработчики Оракла зашифровали это в строку, а ты, SY, смог их раскусить, молодец.

К сообщению приложен файл. Размер - 20Kb
1 авг 11, 12:17    [11052170]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно определить десятичный разделитель?  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6731
Max Pro
Что ж, похоже на правду


RTFM и казаться перестанет
1 авг 11, 12:22    [11052206]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно определить десятичный разделитель?  [new]
-2-
Member

Откуда:
Сообщений: 15330
Max Pro
по-хорошему разделители должны храниться по отдельности. Неужели, думаю, разработчики Оракла такие дураки.
Они и формат даты хранят одной строкой, а не по отдельности.
1 авг 11, 12:49    [11052398]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно определить десятичный разделитель?  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2855
Max Pro
... Разработчики Оракла зашифровали это в строку, а ты, SY, смог их раскусить, молодец.

Разработчики, сцуко, они такие.
Но SY не наеобманешь.
1 авг 11, 13:01    [11052466]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить