ошибка при создании PROCEDURE на MySQL - PullRequest
0 голосов
/ 19 ноября 2009

Я пытаюсь создать стандартную процедуру mysql, но у меня появляется следующая ошибка

Script line: 2 Failed to CREATE PROCEDURE proc_test_bideep

Синтаксис proc:

DELIMITER $$

DROP PROCEDURE IF EXISTS `commun`.`insert_categorie` $$
CREATE PROCEDURE `commun`.`insert_categorie` (id_mere INT,
                                                                lib_categ VARCHAR(50),
                                                                id_categ_sup INT ,
        categ_authInstantBuy INT)
BEGIN
SET @bg_mere := (SELECT categ_bg FROM categ_basic WHERE categ_id = id_mere);

 @bg_mere+2,categ_level_bideep,categ_statut,categ_adult,categ_authSmallBid,categ_authBid,categ_authInstantBuy);
        SELECT '1' AS code_retour;   END IF;
ecetera.........
END $$

DELIMITER ;

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

а) Вам необходимо ОБЪЯВИТЬ любые переменные в первых строках процедуры, включая их тип данных:

DECLARE bg_mere INT;

b) Чтобы извлечь значение из базы данных в переменную, вы используете синтаксис SELECT ... INTO:

SELECT categ_bg INTO bg_mere FROM categ_basic WHERE categ_basic.categ_id = id_mere;

в) У вас есть КОНЕЦ ЕСЛИ без соответствующего ЕСЛИ.

d) Закрывающему END нужна точка с запятой (но не BEGIN), только тогда вам понадобится разделитель для завершения всего оператора, и, наконец, вы должны сбросить разделитель обратно в нормальное состояние:

BEGIN
  # body of the stored procedure goes here
END;
$$
DELIMITER ;
0 голосов
/ 01 декабря 2009

В ваших параметрах отсутствует ключевое слово IN , например: ... (IN id_mere INT, IN lib_categ ...). Кроме того, вам необходимо настроить переменную OUT для @ bg_mere в исходном списке параметров, например (IN xxx, ..., OUT bg_mere VARCHAR / INT / WHATEVER).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...