Mysql Хранимая Процедура Выпуск

0

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

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 ; |
Теги:
stored-procedures

1 ответ

1
Лучший ответ

"Обратите внимание, что литеральное строковое выражение или пользовательская переменная являются единственными способами, которыми вы можете указать формулировку, которая будет подготовлена.", из эта документация.

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

set @q_sql = d_query;

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

  • 0
    Спасибо Джереми, прояснили проблему мой конец.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню