ORA-01722: неверный номер - PullRequest
       23

ORA-01722: неверный номер

1 голос
/ 16 сентября 2009

Когда я выполняю приведенную ниже команду SQL, используя одинарные кавычки для ввода числа, я получаю сообщение об ошибке если удалить одинарные кавычки, он успешно обновляется. зная, что тип поля HEIGHT НОМЕР.

Странно то, что я пытался использовать один и тот же оператор sql с одинарными кавычками на разных машинах, некоторые машины выполняли его успешно, другие нет.

Любое объяснение, пожалуйста

SQL>  UPDATE TBL_DEVICE_INFO SET HEIGHT='14.5'  WHERE ID='6ujbfI';
 UPDATE TBL_DEVICE_INFO SET HEIGHT='14.5'  WHERE ID='6ujbfI'
                                   *
ERREUR à la ligne 1 :
ORA-01722: invalid number



SQL>  UPDATE TBL_DEVICE_INFO SET HEIGHT=14.5  WHERE ID='6ujbfI';

1 row updated.

Ответы [ 2 ]

6 голосов
/ 16 сентября 2009

Скорее всего, это проблема локали.

То есть некоторые машины имеют десятичный символ "." (точка), а некоторые имеют "," (запятая).

Вы можете проверить это так:

UPDATE TBL_DEVICE_INFO 
   SET HEIGHT = to_number('14.5', '99D9','NLS_NUMERIC_CHARACTERS = ''. ''') 
   WHERE ID='6ujbfI'

Когда число указывается в одиночных кавычках, oracle будет выполнять неявное преобразование в число с использованием символов, установленных в базе данных.

Вы можете изменить значение по умолчанию, установив параметр NLS_NUMERIC_CHARACTERS:

alter session set NLS_NUMERIC_CHARACTERS = '. ';

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

1 голос
/ 16 сентября 2009

Строки должны быть заключены в одинарные кавычки, цифры не должны быть.

Может быть, вы используете другой клиент на машинах, где работает неверный синтаксис?

...