繁体   English   中英

如何将可选参数传递给过程?

[英]How can I pass optional params to procedure?

我有2个mrthods save()edit()实体。 当我保存实体时,我检查日期重叠以及日期周期是否唯一-保存。 为此,我使用oracle过程。 如果过程返回> 0行-此时间段不是唯一的。 当我编辑实体时-它已经存在于db中,我需要按ID进行可选检查。

CallableStatement call = connection.prepareCall("{ ? = call checkDateRangesOverlap(?,?,?,?)}");
call.registerOutParameter(1, Types.INTEGER); // or whatever it is
Date dateStart = Date.from(start.atZone(ZoneId.systemDefault()).toInstant());
Date dateEnd = Date.from(end.atZone(ZoneId.systemDefault()).toInstant());
call.setDate(2, new java.sql.Date(dateStart.getTime()));
call.setDate(3, new java.sql.Date(dateEnd.getTime()));
call.setLong(4, user.getId());
call.setLong(5, id);
call.execute();

但是,如果我创建新实体,则id为nullcall.setLong(5, id); 抛出错误。

如何将可选参数传递给过程?

如果您的id可以为null ,那么可以使用setNull()代替使用call.setLong(5, null)

if (id == null) {
    call.setNull(5, java.sql.Types.BIGINT);
} else {
    call.setLong(5, id);
}

暂无
暂无

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

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