我尝试使用 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/