将日期作为varchar传递到SQL Server中的存储过程

时间:2020-07-13 14:11:59

标签: java sql-server spring hibernate callable-statement

我有一个存储过程,可以接受类似这样的参数:

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并不是一个选择)

0 个答案:

没有答案
相关问题