2016-08-18 2 views
0

Я создаю процедуру, которая выбирает member_id в courser.member_id, имея более 100000 записей. i объявила одну переменную i, которая хранит один идентификатор элемента во время обновления следующего запроса.Ошибка процедуры Mysql при ее выполнении

может разрешить это ..? процедура выглядит следующим образом: -

 DELIMITER // 
    DROP PROCEDURE IF EXISTS Mock_test_1() 
    CREATE PROCEDURE Mock_test_1()  
    BEGIN DECLARE i int unsigned; 
    DECLARE curs1 CURSOR FOR select member_id from client_master; 
    open curs1 read_loop: LOOP 
    FETCH curs1 INTO i; 
    update client_master set `mobileno`='00000',`email`=concat('MOCK',member_id,'@mock.com'),`password`=md5('MOCK'),; 
    END // 
DELIMITER ; 

Ошибка

ERROR 1064 (42000): У вас ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для правого синтаксиса использовать вблизи «() CREATE PROCEDURE Mock_test_1() НАЧАТЬ

DECLARE я ИНТ без знака;

DECLARE у.е.»в строке 1

+1

Добавить '' 'после процедуры DROP IF EXISTS Mock_test_1()' – Jens

+0

Перед использованием триггеров, хранимых процедур и т. Д. Вам необходимо изменить разделитель. –

ответ

0

Вы должны изменить разделитель перед использованием триггеров, хранимых процедур и так далее.

+0

он изменил разделитель, так что он в порядке –

+0

Проблема находится в точке с запятой при процедуре падения –

+0

у меня были изменения в горничной, но она дала некоторую ошибку DROP PROCEDURE IF EXISTS Mock_test_1; CREATE PROCEDURE Mock_test_1() BEGIN DECLARE i int unsigned; DECLARE curs1 CURSOR Для выбора member_id из client_master; open curs1; read_loop: LOOP FETCH curs1 INTO i; update client_master set 'mobileno' = '',' email' = concat ('MOCK', member_id, '@ mock.com'), 'password' = md5 ('MOCK'), businessaddress = concat ('MOCK' , member_id), imeino = '00000', panno = 'AAAAA66666', aadharno = '11111'; Вставить в client_master_test выбрать * из client_master; END // DELIMITER; –

Смежные вопросы