2012-02-23 13 views
-1

少し問題があります。プロシージャが存在しないように見えます。どういうわけか、それは作成後に削除されます。私は何かを変えるたびに違うエラーになる。私は実際に何が原因でエラーが発生しているのかわからない、おそらく私はプロシージャをドロップし、同じクエリでそれらを作成することはできません。MySQlの保管手順

私はあなたが私を助けてくれることを願っています。

drop procedure if exists refIntChk; 

DELIMITER // 

    CREATE PROCEDURE refIntChk(IN district INT(11), OUT b INT(1)) 
    BEGIN 
     DECLARE b INT(1); 
     IF district IN (select dist FROM t13) 
     THEN 
      SET b = 1; 
      ELSE 
      SET b = 0; 
     END IF; 
    END; // 

DELIMITER ; 

drop procedure gen if exists ; 

DELIMITER // 

    CREATE PROCEDURE gen() 
    BEGIN 
     DECLARE rows INT(11) DEFAULT (SELECT COUNT(dist) FROM t13); 
     DECLARE district INT(11); 
     DECLARE custname VARCHAR(16); 
     DECLARE revenue FLOAT; 
     DECLARE x INT DEFAULT 10000; 
     DECLARE outvar INT(11); 

     WHILE x > 0 
     DO 
      SET district = FLOOR(RAND()*rows)+1; 
      CALL refIntChk(district, outvar); 
      IF outvar = 1 
      THEN   
       SET custname = substring(MD5(RAND()), -16); 
       SET revenue = (RAND() * 10); 
       INSERT INTO t14 VALUES(NULL, custname, district, revenue); 
       SET x = x - 1; 
      END IF; 
     END WHILE; 
    END;// 

DELIMITER ; 

CALL gen(); 
+0

あなたが取得しているエラーの種類は何? –

+0

おそらくストアではなくストアドプロシージャを意味します:)) – rkosegi

答えて

1

あなたがエラーを取得する場合、それは、各ステートメントを実行するために、通常は良いことだ一つずつ、およびエラーを生産している1参照。

DROP手続き文は次のようになります。

drop procedure if exists gen;