我在使用存储过程填充预定义表时遇到了一些麻烦。 mytable有6个字段:uid,testrun,exp1,exp2,exp3,weightedvalue其中uid是自动增量PK。我的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
不幸的是,这会导致标题中所述的错误。据我所知,我只插入了6个字段中的5个,但显然我不想手动输入自动增量PK uid。 如何在不传递自动增量ID的情况下将exp值输入到此表中。 当然我可以创建一个没有额外PK的表,但这不是我想要的。
提前感谢您的任何建议!
答案 0 :(得分:2)
插入的最后一行有逗号,有6列而不是5:
exp1 * 0,2 + (exp2_1+exp2_2) * 0.5 + (exp3_1+exp3_2) * 0.3
^
我想这应该是小数点,而不是逗号。
答案 1 :(得分:1)
当insert语句中的列数少于查询中的值数时,抛出上述异常
例如
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');