Передача дат как varchar в хранимую процедуру на SQL сервере - PullRequest
2 голосов
/ 13 июля 2020

У меня есть хранимая процедура, которая принимает такие параметры:

ALTER PROCEDURE [DataExtract].[USP_GET_ACTIVATIONS]
(
  @UNITID INT = NULL,
  @STARTDATE VARCHAR(30) = NULL,
  @ENDDATE VARCHAR(30) = NULL,
  @TEST BIT = 0
)
AS
BEGIN
......

Когда я выполняю это из SQL консоли сервера, она возвращает ожидаемые данные.

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). Я предполагаю, что что-то не так с тем, как я провожу свидания, но я не могу понять, что именно.

Как мне go решить эту проблему? (Смена SP невозможна, поскольку от этого зависит множество других компонентов)

...