У меня есть следующие хранимые процедуры в MySQLMySQL StoredProcedure против HSQLDB StoredProcedure
DELIMITER $$
CREATE DEFINER=`user`@`%` PROCEDURE `sp_getJobs`()
BEGIN
SELECT * FROM jobs_table;
END$$
DELIMITER ;
и следующие определены в HSQLDB (для модульных тестов)
CREATE PROCEDURE sp_getJobs() READS SQL DATA
DYNAMIC RESULT SETS 1
BEGIN ATOMIC
DECLARE result CURSOR WITH RETURN FOR SELECT * FROM jobs_table FOR READ ONLY;
OPEN result;
END
Spring Framework код, который выполняет хранимую процедуру
query = "Call sp_getJobs"; //This is used when MySql is database
query = "Call sp_getJobs()"; //This is used when HsqlDb is used in testing
getJdbcTemplate().query(query, rs -> {
process(rs);
return null;
});
private void process(ResultSet rs) {
while (rs.next()) {
//do something
}
}
Весенний код, который выполняет mysql, отлично работает, однако, когда я выполняю sa me code from hsqldb Я получаю пустой набор результатов (rs.next() возвращает false).
Примечание. Файл createdata.sql, который я использую для тестирования, создает таблицу jobs_table и заполняет ее также шестью строками данных. Таким образом, таблица должна иметь данные.