2009-11-19 3 views
0

пытаюсь создать процедуру MySQL акций, но я следующее сообщение об ошибкеошибка при создании PROCEDURE на MySQL

Script line: 2 Failed to CREATE PROCEDURE proc_test_bideep 

Синтаксис прок является:

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 ; 

ответ

0

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

1

а) Вы должны декларировать любые переменные в первых строках процедуры, в том числе их типа данных:

DECLARE bg_mere INT; 

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

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

c) У вас есть END IF без соответствующего IF.

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

BEGIN 
    # body of the stored procedure goes here 
END; 
$$ 
DELIMITER ; 
+0

Обрамление точка с запятой после BEGIN неверна. – matt

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