gpt4 book ai didi

mysql - 带有日期输入参数的 hsqldb 过程

转载 作者:行者123 更新时间:2023-11-29 17:50:29 24 4
gpt4 key购买 nike

我需要为某些下载操作编写测试。该操作从MSSQL数据库调用程序,获取结果集并用java制作一些东西。为了进行测试,我使用 hsqldb。

My procedure:
CREATE PROCEDURE map.Get1(IN packageName varchar(100),
IN downloadDate DATE)
READS SQL DATA DYNAMIC RESULT SETS 1 BEGIN ATOMIC
DECLARE result CURSOR WITH RETURN FOR SELECT * FROM map.tvschedule FOR READ ONLY;
OPEN result;
END

这个程序不起作用,我有一个异常(exception)

调用map.GET1('流派','2018-03-10');

[42561][-5561] incompatible data type in conversion
java.lang.RuntimeException: org.hsqldb.HsqlException: incompatible data type
in conversion

但是这个(没有日期参数)效果很好:

CREATE PROCEDURE map.Get1(IN packageName varchar(100)) 
READS SQL DATA DYNAMIC RESULT SETS 1 BEGIN ATOMIC
DECLARE result CURSOR WITH RETURN FOR SELECT * FROM map.tvschedule FOR READ ONLY;
OPEN result;
END

调用map.GET1('流派');

第一个需要的行

需要的第二行

我不会使用输入参数,但我需要这个程序来查看我要使用的内容。

我的问题是如何在 hsqldb 过程中使用日期输入参数?

更新1:我使用了TO_DATE,现在它运行良好,但是我的结果集中没有数据,我的java代码是:

try (CallableStatement callableStatement = connection.prepareCall("{ call 
map.GetGenreProtocol( ?, ? ) }")) {
callableStatement.setString(1, packageName);
callableStatement.setDate(2, date);
callableStatement.execute();
ResultSet resultSet = callableStatement.getResultSet();


while (resultSet.next()) {

Interval Interval = new Interval();
Interval.setDuration(resultSet.getInt("duration"));
Interval.setMappingTargetId(resultSet.getInt("mappingTargetId"));
Interval.setGenreId(resultSet.getInt("genreId"));
Interval.setStart(resultSet.getLong("start"));
Interval.setCategoryId(resultSet.getInt("categoryId"));
Interval.setCategoryName(resultSet.getString("categoryName"));
Interval.setGenreName(resultSet.getString("genreName"));
Interval.setDescription(resultSet.getString("description"));

Intervals.add(Interval);
}
}

最佳答案

使用TO_DATE函数。

例如:

call map.GET1('Genre', TO_DATE('2018-03-10', 'YYYY-MM-DD'));

我想您需要创建一个返回表而不是过程的函数:

CREATE FUNCTION map.Get1(IN packageName  VARCHAR(100),
IN downloadDate DATE)
RETURNS TABLE(.....)
READS SQL DATA
BEGIN ATOMIC
....
END;

关于mysql - 带有日期输入参数的 hsqldb 过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49403470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com