Вставить запрос, показывающий ошибку

#oracle #oracle10g #ora-01438

#Oracle #oracle10g #ora-01438

Вопрос:

Я создал таблицу в oracle10g, используя следующий запрос……

 CREATE TABLE  "MOBILELOCATION" 
("EMPLOYEEID" NUMBER NOT NULL ENABLE, 
 "PRESENTDATE" VARCHAR2(30) NOT NULL ENABLE, 
  "PRESENTTIME" VARCHAR2(30) NOT NULL ENABLE, 
  "LATITUDE" NUMBER(6,10) NOT NULL ENABLE, 
 "LONGITUDE" NUMBER(6,10) NOT NULL ENABLE) 
 

Таблица была создана успешно… но проблема в том, что когда я пытаюсь вставить строку в таблицу, она показывает ошибку

 error ORA-01438: value larger than specified precision allowed for this column
 

Запрос, который я использовал, является ,

 insert into mobilelocation values(12303,'30-10-2011','09:30',16.9876,82.3426);
 

Где я аннулировал ограничения?? Пожалуйста, объясните любой..

Ответ №1:

Ваши столбцы LATITUDE и LONGTITUDE определены довольно странно — NUMBER(6,10) указано 6 для точности (общее количество цифр) и 10 для масштаба (количество цифр справа от десятичной точки).

Вы либо меняете их на NUMBER(*) или на NUMBER (10, 6) или NUMBER(*,4) или аналогичные … правильное объявление трудно угадать, но все упомянутые будут работать с предоставленными вами образцами данных…

Для справки см. http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/datatype.htm#i16209