如何从命令行调用存储过程?

我有一个程序:

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. I tried this: mysql> CALL insertEvent(2012.01.01 12:12:12);

    Result:

    错误1064(42000):您的SQL语法有错误;判断

  2. And this: mysql> CALL insertEvent

    -> 2012.01.01 12:12:12;

    Result:

    错误1064(42000):您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解第2行"2012.01.01 12:12:12"附近要使用的正确语法

推荐答案

在日期前后加上引号:

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

Mysql相关问答推荐

SQL:CAST与窗口函数组合导致语法错误

对匹配两个或多个表的表结果进行排序

如何通过SQL来计算到达特定值的行的数量

按优先级 for each 具有 status_id 的员工 Select 单行

基于其列之一内的值查询模型

Mysql JSON_REMOVE 数组键和值 (MariaDB)

MYSQL 删除两个已知字符串之间的字符串

mysql insert into select join - 通过连接表将值从一列复制到另一表

如何将结果列中的不同值按其他列sql中的值带入单行

Mysql 相等性反对 false 或 true

MYSQL 或 Laravel Eloquent 如何从这个订单中统计细节

SQL 查找边界之间的值

动态创建内联 SQL 表(用于排除左连接)

MySQL使用多列 Select 重复记录

这是将表单数据插入 MySQL 数据库的安全方法吗?

MySQL INSERT IF(自定义 if 语句)

使用 mysql 处理非常大的数据

如何改进 INSERT INTO ... SELECT 锁定行为

Python 是否支持 MySQL 准备好的语句?

按 COUNT(*) 过滤?