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