2012-02-23 149 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

你得到什么样的错误? – 2012-02-23 15:02:09

+0

你可能是指存储过程,而不是存储:)) – rkosegi 2012-02-23 17:11:27

回答

1

当你的错误,它通常是良好的运行每条语句,一个接一个,看看哪一个是生产的错误。

第二DROP程序的说法应该是:

drop procedure if exists gen;