2009-08-24 2 views
0

При создании следующей процедуры я получаю сообщение об ошибке:Mysql хранимых процедур Выпуск

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 
'd_query; 
set d_result = execute stmt; 
deallocate prepare stmt; ' at line 15 

Но после проверки я не могу увидеть ошибку. Строка 15 относится к «если d_query не равно нулю».

Это настоящая ошибка? Или он не рад принять выполнение как назначение d_result?

Любая помощь была бы принята с благодарностью.

delimiter | 
create procedure runtests() 
begin 
    declare d_test_id char(20); 
    declare d_query text; 
    declare d_result text; 

    declare cur cursor for select test_id, query, result from datavalidator order by test_id; 

    open cur; 

    repeat 
    fetch cur into d_test_id, d_query, d_result; 

    if d_query is not null then 
     prepare stmt from d_query; 
     set d_result = execute stmt; 
     deallocate prepare stmt; 

     update datavalidator set result = d_result; 
    end if; 
    until done end repeat; 

    close cur; 
end; 
| 
delimiter ; | 

ответ

1

«Обратите внимание, что буквальная строка или пользовательский переменные являются единственными способами можно указать оператор, который будет подготовлены.», Из this documentation.

Попробуйте записать значение в переменную пользователя, прежде чем пытаться подготовить, возможно, что-то вроде:

set @q_sql = d_query; 

... или написать непосредственно в пользовательскую переменную в fetch линии.

+0

Спасибо, Джереми, выяснил, что проблема моя. – 2009-08-24 10:51:10

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