【问题标题】:Execute MySQL Stored Procedures in Java在 Java 中执行 MySQL 存储过程
【发布时间】:2012-10-24 08:12:24
【问题描述】:

我正在尝试使用 jdbcTemplate 执行存储过程,但我不断收到错误消息,指出 GetEvents 需要 0 个参数。任何人都可以解释为什么或有更好的方法来执行这个存储过程吗?

我得到的错误是:
org.springframework.dao.InvalidDataAccessApiUsageException: SQL [CALL GetEvents(?, ?, ?)]: given 3 parameters but expected 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);

【问题讨论】:

  • 您是否曾设法找出调用的问题?

标签: java mysql stored-procedures


【解决方案1】:

我怀疑,这是因为您的变量命名(end 是保留关键字)。请尝试将 end 重命名为 endTimestart 重命名为 startTime 或类似名称。

【讨论】:

  • 我已经更正了,但是我仍然看到同样的错误。
猜你喜欢
  • 2016-02-08
  • 2010-11-02
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 2017-01-29
  • 1970-01-01
  • 2013-09-20
相关资源
最近更新 更多