2009-11-19 3 views
0

essaie de créer une procédure de stock MySQL, mais j'ai l'erreur suivanteerreur lors de la création PROCEDURE sur mysql

Script line: 2 Failed to CREATE PROCEDURE proc_test_bideep 

La syntaxe proc est:

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 ; 

Répondre

0

Vos paramètres sont manquants le mot-clé IN tels que: ... (IN id_mere INT, IN lib_categ ...). En outre, vous devez configurer votre variable OUT pour @bg_mere dans la liste des paramètres initiaux tels que (IN xxx, ..., OUT bg_mere VARCHAR/INT/WHATEVER).

1

a) Vous devez déclarer toutes les variables sur les premières lignes de la procédure, y compris leur type de données:

DECLARE bg_mere INT; 

b) Pour récupérer une valeur de la base de données dans une variable, vous utilisez SELECT ... INTO syntaxe:

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

c) Vous avez un IF FIN sans l'IF correspondant.

d) La fin de fermeture a besoin d'un point-virgule (non BEGIN cependant), alors seulement avez-vous besoin d'un séparateur pour terminer l'intégralité de l'instruction, et enfin vous devez réinitialiser le délimiteur retour à la normale:

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

Mettre un le point-virgule après BEGIN est incorrect. – matt

Questions connexes