-1
因此,我寫了這個小的存儲功能,應該將果汁機的成本返還給我。但是,我有一些麻煩,找出爲什麼它沒有工作。任何幫助,將不勝感激MySql - 如何擺脫無數據:零行取得
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `juiceOrderCost`(p_id INT) RETURNS double
BEGIN
DECLARE cost DOUBLE;
DECLARE i INT DEFAULT 0;
DECLARE numRows INT;
DECLARE numDone INT DEFAULT 1;
DECLARE cup_id INT DEFAULT 0;
DECLARE myCursor CURSOR for
SELECT cupId FROM hasJuice WHERE orderID = p_id;
OPEN myCursor;
SELECT FOUND_ROWS() INTO numRows;
FETCH myCursor INTO cup_id;
WHILE numDone <= numRows DO
SET cost = cost + juiceCupCost(cup_id);
FETCH myCursor INTO cup_id;
SET numDone = numDone + 1;
END WHILE;
CLOSE myCursor;
RETURN cost; END
爲什麼光標。 juiceCupCost在哪裏。你在哪裏建立了'DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;'並且閱讀循環 – Drew
經常人們使用遊標,因爲他們喜歡程序化思考,而且還沒有處於集合和關係的思維模式。遊標像狗一樣運行。拍攝連接和聚合函數。 – Drew
主要使用遊標,因爲它真的是我能想到的唯一解決方案。我是一個非常初學者,至少可以說。我還沒有確定。 juiceCupCost是同一個數據庫中的一個功能。那個工作正常。給出一個cupID,它給了我cupId的成本。我不知道你的意思是讀循環/。 – Azazel