在mysql上创建PROCEDURE时出错

时间:2009-11-19 14:39:46

标签: mysql stored-procedures

我试图创建一个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 个答案:

答案 0 :(得分:1)

a)您需要在过程的第一行DECLARE任何变量,包括它们的数据类型:

DECLARE bg_mere INT;

b)要将数据库中的值提取到变量中,请使用SELECT ... INTO语法:

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

c)你有一个没有相应IF的END IF。

d)关闭END需要一个分号(虽然不是BEGIN),只有这样才需要一个分隔符来完成整个语句,最后你应该将分隔符重置为正常:

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

答案 1 :(得分:0)

您的参数缺少关键字 IN ,例如:...(IN id_mere INT,IN lib_categ ...)。此外,您需要在初始参数列表中为 @bg_mere 配置 OUT 变量,例如(IN xxx,...,OUT bg_mere VARCHAR / INT / WHATEVER)。