繁体   English   中英

在Java中执行MySQL存储过程

[英]Execute MySQL Stored Procedures in Java

我正在尝试使用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)

爪哇

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重命名为endTimestart将其重命名为startTime或类似的名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM