SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.07.2012 01:37:41

dadli
Завсегдатай
Зарегистрирован: 16.10.2011
Сообщений: 50

PREPARED STATEMENT в WHILE цикле

здравствуите
не понимал как принимать PREPARED STATEMENT в цикле WHILE. прошу помошч.
например есть таблица autos, внём поле name, хочу сделать такое: проверит первое 5 запис, и если name ровно "toyota", то в таблице mytable (в поле log) записать "yes", иначе "no". написал такои процедурку, но mysqli_error() говарит, что ошибка в том линие гда написано "EXECUTE ...."
если в WHEN напишу без PREPARED STATEMENT, прямо запрос, то работает.
пожалуиста смотрите, где мне ошибка?


CREATE PROCEDURE proc_auto()
BEGIN

DECLARE start INT;
SET start = 0;
    PREPARE stmt FROM  ' SELECT name FROM autos ORDER BY id LIMIT ?,1 ';
         
    WHILE start < 5 DO
   
        CASE
            WHEN (EXECUTE stmt USING start ) = 'toyota'
                THEN INSERT INTO mytable (log)  VALUES('yes');
            ELSE
               INSERT INTO mytable (log)  VALUES('no');
        END CASE;
        SET start = start + 1;
       
    END WHILE;
END;

Отредактированно dadli (08.07.2012 01:38:03)

Неактивен

 

#2 08.07.2012 17:05:55

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: PREPARED STATEMENT в WHILE цикле

Нельзя использовать execute в контексте when, if и т.д. Это ведь не условие соответствия.

Вы можете сделать
PREPARE stmt FROM  ' SELECT name INTO @name FROM autos ORDER BY id LIMIT ?,1 ';
а потом в цикле
EXECUTE stmt USING @start
case when @name='toyota' ...

Неактивен

 

#3 08.07.2012 20:58:32

dadli
Завсегдатай
Зарегистрирован: 16.10.2011
Сообщений: 50

Re: PREPARED STATEMENT в WHILE цикле

я в месте етого, также на несколко форуме задал етот вопрос, почемуто нигде не ответили точно, а ваш ответ, именно то, что мне интересно било. спасибо вам огромное vasya.   настаяши проф!

Отредактированно dadli (08.07.2012 21:00:12)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson