MYSQL存儲過程發生Result consisted of more than one r... 摘要: MYSQL存儲過程錯誤 SELECT … INTO … 這個SELECT語法把選定的列直接存儲到變量。因此,只有單一的行可以被取回。 在使用的時候,要注意,加上LIMIT 1
SELECT id,data INTO x,y FROM topic LIMIT 1;
另外,這種賦值語句還有個規矩就是參數名和字段名不能沖突,不然能夠執行過去,但是卻沒有給參數賦值,這是個很隱性的錯誤,可以參考手冊上的: 重要: SQL變量名不能和列名一樣。如果SELECT ... INTO這樣的SQL語句包含一個對列的參考,並包含一個與列相同名字的局部變量,MySQL當前把參考解釋為一個變量的名字。
DELIMITER // CREATE PROCEDURE mytopic ( topicId INT(4), title VARCHAR(50) ) BEGIN SELECT topicId,title INTO topicId,title FROM tbl_topic limit 1; END// DELIMITER ;
當這個程序被調用的時候,無論topicId,title列的值是什麼,變量newname將返回值‘NULL’。
即: CALL mytopic(@topicId,@title); SELECT @topicId,@title; 顯示結果: @topicId @title NULL NULL