MySQL Cursor с переменной в операторе выбора

У меня есть следующий код в хранимой процедуре:

DECLARE done INT DEFAULT FALSE;
declare v_degree int(11);
declare v_start_age smallint(6);
declare v_end_age smallint(6);
declare v_gender varchar(20);
declare v_calctable varchar(200);

SELECT calculationtable into v_calctable FROM wac.degrees where tablename = concat("cdb_" + arg_tablename);

declare cur CURSOR for select degree, start_age, end_age, belt, gender from v_calctable;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

[/ NOEDIT] Таким образом, я получу синтаксическую ошибку в строке «SELECT calctabletable to v_calctable FROM wac.degrees, где tablename = concat (" cdb_ "+ arg_tablename);"

Если я поставлю его после «Объявить курсор», синтаксическая ошибка отсутствует, но мне нужно, чтобы результат использовался в операторе выбора de Cursor.

Как я могу сделать это?

Благодарю.

0

Решение

CREATE DEFINER=`root`@`localhost` PROCEDURE `my_procedure`()
BEGIN
DECLARE done INT DEFAULT FALSE;
declare v_degree int(11);
declare v_start_age smallint(6);
declare v_end_age smallint(6);
declare v_gender varchar(20);
declare v_calctable varchar(200);

SELECT calculationtable into v_calctable FROM wac.degrees where tablename = concat("cdb_" + arg_tablename);
begin                                                                   -- write here begin keyword
declare cur CURSOR for select degree, start_age, end_age, belt, gender from v_calctable;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
end;                                                                    -- end here inner block

END

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

1

Другие решения

Других решений пока нет ...

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector