2010-07-06 113 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'); 
相關問題