2010-07-06 2 views
1

У меня есть некоторые проблемы, заполняющие предопределенную таблицу хранимой процедурой. mytable имеет 6 полей: uid, testrun, exp1, exp2, exp3, weightedvalue, где uid - автоинкремент PK. My sp содержит инструкцию для вставки, например:Код ошибки: 1136 Количество столбцов не соответствует количеству значений в строке 1) внутри sp

CREATE PROCEDURE test (IN testrun INT) 
BEGIN 
.... some declare statements ... 
INSERT INTO exp_factors(testrun,exp1,exp2,exp3,weightedvalue) VALUES 
(testrun, 
exp1, 
exp2_1 + exp2_2, 
exp3_1 + exp3_2, 
exp1 * 0,2 + (exp2_1+exp2_2) * 0.5 + (exp3_1+exp3_2) * 0.3); 


END 

К сожалению, это приводит к ошибке, указанной в названии. Я понимаю, что я вставляю только 5 из 6 полей, но, очевидно, я не хочу вводить автоинкремент PK uid вручную. Как я могу ввести свои значения exp в эту таблицу, не передавая идентификатор автоинкремента. Конечно, я мог бы просто создать таблицу без дополнительной PK, но это не то, что я хочу.

Благодарим за любые предложения заранее!

ответ

1

У вас есть запятая в последней строке вставки, делая 6 столбцов вместо 5:

exp1 * 0,2 + (exp2_1+exp2_2) * 0.5 + (exp3_1+exp3_2) * 0.3 
     ^

Я думаю, что это должно быть десятичной точкой, а не запятой.

+0

ТНХ микрофоне. жаль всех. У меня просто был неправильный десятичный разделитель здесь. Иногда я действительно работаю в MySQL, где вы действительно не можете отличить точку от запятой. Я рад, что я c & p код. Напоминает мне о некоторых из любимых футболок: спасибо mike :) –

1

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

, например

INSERT INTO PERSON (PERSON_ID,FIRST_NAME,LAST_NAME,GENDER,BIRTH_DATE,CITY,STATE,COUNTRY,POSTAL_CODE) VALUES (NULL,'JHON','DOE','M','1988-06-17','7TH CROSS','HERE','THERE','WHERE','5600012'); 

Здесь число значений равно 10, но столбцы в запросе равны 9, поэтому база данных выдает указанное выше исключение.

, чтобы решить эту проблему, мы должны добавить STREET столбец запроса

INSERT INTO PERSON (PERSON_ID,FIRST_NAME,LAST_NAME,GENDER,BIRTH_DATE,STREET,CITY,STATE,COUNTRY,POSTAL_CODE) VALUES (NULL,'PRAVEEN','KUMAR','M','1988-06-17','7TH CROSS','BANGALORE','KARNATAKA','INDIA','560078'); 
Смежные вопросы

 Смежные вопросы