web-dev-qa-db-fra.com

Comment appeler une procédure stockée mysql, avec des arguments, en ligne de commande?

Comment puis-je appeler une procédure stockée à partir de la ligne de commande?

J'ai une procédure:

CREATE DEFINER=`root`@`localhost` PROCEDURE `insertEvent`(IN `dateTimeIN` DATETIME)
    NO SQL
BEGIN
    SET @eventIDOut = NULL;

    IF  EXISTS(SELECT * FROM `events` WHERE `eventDate` = dateTimeIN) THEN
        SELECT `eID` INTO @eventIDOut FROM `events` WHERE `eventDate` = dateTimeIN LIMIT 1;
        ELSE
        INSERT INTO `events` (`eventDate`) VALUES(dateTimeIN);
        SET @eventIDOut = last_insert_id();
    END IF;

    SELECT CONCAT(@eventIDOut);
END
  1. J'ai essayé ceci:mysql> CALL insertEvent(2012.01.01 12:12:12);

    Résultat:

    ERREUR 1064 (42000): vous avez une erreur dans votre syntaxe SQL; Consultez le manuel correspondant à la version de votre serveur MySQL pour connaître la syntaxe à utiliser près de '.01 12:12:12)' à la ligne 1.

  2. Et ceci:mysql> CALL insertEvent

    -> 2012.01.01 12:12:12;

    Résultat:

    ERREUR 1064 (42000): vous avez une erreur dans votre syntaxe SQL; Consultez le manuel qui correspond à la version de votre serveur MySQL pour connaître la syntaxe à utiliser près de '2012.01.01 12:12:12' à la ligne 2.

35
Gábor Dani

Avec des guillemets autour de la date:

mysql> CALL insertEvent('2012.01.01 12:12:12');
66
koriander