2010-07-06 108 views
1

我有一些麻烦,用存储过程填充预定义的表。 mytable有6个字段:uid,testrun,exp1,exp2,exp3,weightedvalue其中uid是一个自动增量PK。我的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 

不幸的是,这会导致标题中声明的错误。我知道我只插入6个字段中的5个,但显然我不想手动输入自动增量PK uid。 如何在不传递自动增量ID的情况下将我的exp值输入到此表中。 当然,我可以创建一个没有额外PK的桌子,但那不是我想要的。

感谢提前任何建议!

回答

1

你在你插入的最后一行逗号,使得6列,而不是5:

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

我想,这应该是一个小数点,而不是逗号。

+0

THX麦克的问题。对不起大家。我刚刚在这里有错误的小数分隔符。有时候我真的是MySQL工作台,你真的很难区分点和逗号。我很高兴我编写代码。让我想起了一些最喜欢的T恤:谢谢迈克:) – 2010-07-06 10:15:28

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,因此数据库会引发上述异常。

解决,我们必须列添加街查询

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'); 
相关问题