51

コマンドラインからストアドプロシージャを呼び出すにはどうすればよいですか?

手順があります:

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. 私はこれを試しました: mysql> CALL insertEvent(2012.01.01 12:12:12);

    結果:

    エラー 1064 (42000): SQL 構文にエラーがあります。1 行目の「.01 12:12:12)」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

  2. この: mysql> CALL insertEvent

    -> 2012.01.01 12:12:12;

    結果:

    エラー 1064 (42000): SQL 構文にエラーがあります。2 行目の「2012.01.01 12:12:12」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

4

1 に答える 1

92

日付の前後に引用符を付ける:

mysql> CALL insertEvent('2012.01.01 12:12:12');
于 2013-04-22T22:15:47.867 に答える