Процедуры хранения MySQl - PullRequest
       12

Процедуры хранения MySQl

0 голосов
/ 23 февраля 2012

У меня маленькая проблема. Похоже, процедура не существует. Как-то сбрасывается после создания. Я получаю разные ошибки каждый раз, когда я что-то меняю. Я не совсем уверен, что является причиной ошибки, может быть, мне не разрешено удалять процедуры и создавать их в одном запросе.

Надеюсь, вы, ребята, сможете мне помочь.

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();

1 Ответ

1 голос
/ 23 февраля 2012

Когда вы получаете ошибки, обычно хорошо запускать каждую инструкцию, одну за другой, и посмотреть, какая из них выдает ошибку.

Второй DROP оператор процедуры должен быть:

drop procedure if exists  gen;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...