java - 在 Java 中执行 MySQL 存储过程

标签 java mysql stored-procedures

我尝试使用 jdbcTemplate 执行存储过程,但不断收到错误消息,指出 GetEvents 需要 0 个参数。谁能解释一下为什么或者有更好的方法来执行这个存储过程吗?

我收到的错误是:
org.springframework.dao.InvalidDataAccessApiUsageException: SQL [CALL GetEvents(?, ?, ?)]: 给定 3 个参数,但预期为 0

程序

mysql> CREATE PROCEDURE GetEvents(IN search_table VARCHAR(255), IN start TIMESTAMP, IN end TIMESTAMP)
    -> BEGIN
    -> SELECT COUNT(*)
    -> FROM search_table
    -> WHERE time >= start AND time <= end;
    -> END //
Query OK, 0 rows affected (0.02 sec)

Java

public int getEnterExitsAll(DateTime start, DateTime end) {
    Map<String, String> params = new HashMap<String, String>();
    params.put("search_table", TABLE_ENEX);
    params.put("start", start.toString());
    params.put("end", end.toString());
    return template.queryForInt("CALL GetEvents(?, ?, ?)", params);

最佳答案

我怀疑,这是由于您的变量命名(end 是保留关键字)而发生的。请尝试将 end 重命名为 endTime,将 start 重命名为 startTime 或类似名称。

关于java - 在 Java 中执行 MySQL 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13216066/

相关文章:

java - Java 中如何在不重新编译程序的情况下更新 Date 对象?

php - 通过向下滚动附加表格行

sql - SQL Server 2008中ELSE IF语句中是否可以写IN子句

sql - 一个 StoredProcedure 中的多个更新语句

mysql - 在 mysql select 中使用存储过程

java - 在这种情况下,String 对象如何不可变?

java - Android 将声音保存为铃声 - 铃声列表中未使用标题

java - 检查一维数组中是否有重复整数 Java

php - 在 PHP 中验证后数据未插入数据库

python - Django ForeignKey 字段类型