2017-09-21 2 views
0

je tente d'exécuter une requête variable dans une fonction MySQL personnalisé, voici le script:AFFECTÉ Erreur de syntaxe d'erreur de requête préparée

DELIMITER $ 

CREATE FUNCTION is_present(in_id BIGINT, in_table_name VARCHAR(255)) RETURNS BIT 
BEGIN 
    DECLARE stm VARCHAR(255); 
    DECLARE result BIT DEFAULT 0; 

    SET stm := CONCAT('SELECT IF(COUNT(*), 1, 0) INTO result FROM', in_table_name, 'WHERE id=? LIMIT 1'); 
    PREPARE query FROM stm; 
    EXECUTE query USING in_id; 
    DEALLOCATE PREPARE query; 

    RETURN result; 
END $ 

DELIMITER ; 

Mysql me met en garde contre la syntaxe:

Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'stm; Requête EXECUTE UTILISER in_id; DEALLOCATE PREPARE requête; Résultat de retour; 'À la ligne 9

Répondre

0

Je pense que vous manquez un point-virgule avant le nom var:

PREPARE query FROM :stm;