2013-04-23 87 views
0

沒有發現我有如下一個MySQL循環查詢:MySQL的函數執行成功,但在查詢狀態

DELIMITER $$  

DROP function IF EXISTS getTestAccounts $$; 

CREATE FUNCTION getTestAccounts(endTime INT) RETURNS INT 
BEGIN 
    DECLARE x,y INT; 
    DECLARE c1,result varchar(255); 
    SET c1 = ''; 
    SET result = ''; 
    SET x = endTime; 
    SET y = 4; 
    sloop:LOOP 
     SELECT count(*) INTO c1 FROM `accounts` where `lifeEnd` <= x; 
     IF y > 0 THEN 
      SET x = x-3600; 
      SET y = y - 1; 
      SET result = CONCAT(result,c1,','); 
      ITERATE sloop; 
     ELSE 
      LEAVE sloop; 
     END IF; 
    END LOOP; 
    RETURN result; 
END $$ 
DELIMITER ; 

它成功執行。在製作

SELECT getTestAccounts(1368193391) 

它表明db.getTestAccounts does not exist

交叉檢查這個我用

SHOW FUNCTION STATUS; 

它列出了所創建的長回的所有功能,而不是當前的....

花了差不多一天不知道錯誤在哪裏.....誰能告訴我爲什麼它沒有在數據庫中創建...謝謝

+0

你確定你在創建函數的地方使用數據庫嗎? – 2013-04-23 14:15:51

+0

嗯我很確定...導致我運行檢查查詢的所有測試函數都列出了STATUS函數..... – troy 2013-04-23 14:17:30

+1

定界符$$放在正確的行DROP函數IF EXISTS getTestAccounts $$; '? – Adder 2013-04-23 14:39:45

回答

0

您的問題:

DROP function IF EXISTS getTestAccounts $$; 

在該行的末尾刪除分號,它應該工作。

雖然現在執行該腳本,但您應該會收到錯誤。

+0

什麼都沒有改變它成功,但是,查詢狀態執行時出現了 – troy 2013-04-23 14:53:21

+0

您可以張貼在執行腳本來創建功能時,你得到的輸出?已成功執行 – 2013-04-23 15:55:27

+0

沒有具體的,但眼前這個......你的SQL查詢沒什麼.... :( – troy 2013-04-23 16:01:01