0

以下のような 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;

ずっと前に作成されたが現在のものではないすべての関数をリストします....

間違いがどこで起こっているのかわからないまま、ほぼ1日を過ごします.....データベースに作成されていない理由を誰か教えてください...ありがとう

4

1 に答える 1

0

あなたの問題:

DROP function IF EXISTS getTestAccounts $$;

行末のセミコロンを削除すると、機能するはずです。

ただし、スクリプトをそのまま実行すると、エラーが発生するはずです。

于 2013-04-23T14:50:36.620 に答える