2013-10-11 3 views
1

Я новичок в SQL Server 2012, и, практикуя, я заметил ошибку, которую я не мог исправить.Ошибка SQL-кода SQL SERVER 2012

Я создал таблицу с первичным ключом и другую таблицу, имеющую ссылку. Ref таблица:

create table emp 
(
    empno integer not null, 
    ename varchar(10), 
    job varchar(9), 
    mgr varchar(10), 
    hiredate date, 
    sal decimal(7,2), 
    comm decimal(12,3), 
    deptno integer references dept(deptno) 
) 

Пытался вставить значения с помощью

insert into emp values(100,'Sachin','IT','Srikanth','10-10-2009', 
    50000.00,500.00,1) 

Но я получаю следующее сообщение об ошибке.

Ошибка арифметическое переполнение преобразование числового к типу данных числового

Кроме того, если изменить тип данных COMM к decimal, ошибка исчезает.

+2

Я не мог заставить эту инструкцию вставки терпеть неудачу. Вы уверены, что это именно тот, который терпит неудачу? –

+0

Нет Ошибка в запросе, выполняйте штраф в моей стороне – bgs

ответ

0

В вашем запросе находятся типы данных [decimal(7,2)].

(7,2) сообщает, что номер может иметь точность 7 цифр, причем 2 разряда зарезервированы для десятичной части.

Таким образом, у вас есть только 4 цифры доступны для хранения значений, как 5000.00 является действительным и 500000.00, который вызывает переполнение.

+1

В вопросе нет значения 500000.00. 50000,00 есть, но он вписывается в 7,2 просто отлично. –

+0

Да. Согласитесь. Но этот сценарий возможен для арифметического исключения переполнения. – bgs

+0

Я подозреваю, что вы правы, и что OP фактически не показывал истинный оператор, вызывающий ошибку, но ваш ответ по-прежнему подразумевает наличие недопустимого значение в вопросе (что, возможно, вы читаете неправильно), чего нет ... –