2012-11-04 101 views
0

我试图使用jdbcTemplate执行存储过程,但我不断收到一个错误,指出GetEvents需要0个参数。任何人都可以阐明为什么还有更好的方法来执行这个存储过程?在Java中执行MySQL存储过程

我得到的错误是:
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); 
+0

你有没有设法找出你的调用问题? – Malvon

回答

1

我怀疑,它的发生,因为你的变量命名(end是资源的erved关键字)。请尝试将end重命名为endTimestartstartTime或其他类似内容。

+0

我已纠正,但我仍然看到相同的错误。 – Takkun

+1

@Takkun:你可以分享你的完整错误堆栈吗? –