我有一个存储过程,可以接受类似这样的参数:
ALTER PROCEDURE [DataExtract].[USP_GET_ACTIVATIONS]
(
@UNITID INT = NULL,
@STARTDATE VARCHAR(30) = NULL,
@ENDDATE VARCHAR(30) = NULL,
@TEST BIT = 0
)
AS
BEGIN
......
当我从SQL Server控制台执行此操作时,它将返回我期望的数据。
EXEC [DataExtract].[USP_GET_ACTIVATIONS]
@UNITID = 1,
@STARTDATE = N'2020-06-29',
@ENDDATE = N'2020-07-08',
@TEST = 1
GO
我正在尝试使用此可调用语句调用此过程
final SQLServerConnection connection = (SQLServerConnection) ds.getConnection();
SQLServerCallableStatement callableStatement = (SQLServerCallableStatement) connection.prepareCall("{call [DataExtract].[USP_GET_ACTIVATIONS](?, ?, ?, ?)}");
callableStatement.setInt(1, 1);
callableStatement.setString(2, "2020-06-29");
callableStatement.setString(3, "2020-07-08");
callableStatement.setBoolean(4, true);
final boolean execute = callableStatement.execute();
//execute is always false
该语句始终以false
(和resultSet null
)的形式返回结果。我猜我传递日期的方式出了点问题,但我不知道该怎么办。
如何解决此问题? (因为有很多其他组件都依赖于此,所以更改SP并不是一个选择)