Как вернуть параметр OUT из хранимой процедуры SQL Server с MyBatis - PullRequest
0 голосов
/ 29 августа 2018

У меня есть хранимая процедура с параметром OUT, работающим правильно:

CREATE PROCEDURE sp_actualizaConfigNotif   
    (@rut VARCHAR(9),   
     @Xml_Lista XML,
     @registrosAfectados INT OUTPUT)
AS   
BEGIN --Inicio SP

SET @registrosAfectados = 0;

--Inicio Cursor
declare @idEvento int,
        @indActivo int,
        @idMedioEnvio int

declare config_cursor cursor for
        select
T.C.value('id_Evento[1]','nvarchar(255)') as idEventoParam,
T.C.value('ind_Activo[1]','nvarchar(255)') as indActivoParam,
T.C.value('id_MedioEnvio[1]','nvarchar(255)') as idMedioEnvioParam
from
@Xml_Lista.nodes('/Xml_ListaConfig/evento') T(C)

open config_cursor

fetch next from config_cursor into @idEvento, @indActivo, @idMedioEnvio

WHILE @@FETCH_STATUS = 0
BEGIN
    UPDATE EM 
    SET EM.Estatus = @indActivo
    FROM RELEvento_Medios AS EM 
    JOIN RELEvento_Cliente EC ON EC.id_Evento = EM.id_Evento 
    JOIN MSTCliente CL ON CL.id_Cliente = EC.id_Cliente 
    AND CL.Rut = @rut 
    AND EM.id_Evento =  @idEvento
    AND EM.id_MedioEnvio = @idMedioEnvio

    SET @registrosAfectados = @registrosAfectados+@@ROWCOUNT;

  FETCH NEXT FROM config_cursor INTO @idEvento, @indActivo, @idMedioEnvio

END

CLOSE config_cursor
DEALLOCATE  config_cursor
--Fin Cursor 

END; --Fin SP

EXEC  dbo.sp_actualizaConfigNotif @rut = '174021821', @Xml_Lista = @parametroXml,@registrosAfectados = @returnvalue OUT;
SELECT @returnvalue;

это возвращает параметр OUT.

Теперь я пытаюсь сделать то же самое с MyBatis:

<insert  id="actualizaConfigNotif" parameterType="cl.itau.motor.dto.entrada.ActualizaConfigNotifDTO">
        {call sp_actualizaConfigNotif(#{rut,javaType=String,jdbcType=VARCHAR,mode=IN},#{xml_lista,javaType=String,mode=IN},#{registros,javaType=Long,jdbcType=INTEGER ,mode=OUT})}
    </insert >

Читая много руководств, я считаю, что параметр OUT должен быть указан с помощью "mode = OUT", но когда я проверяю его, я получаю эту ошибку:

org.springframework.jdbc.UncategorizedSQLException: 
### Error updating database.  Cause: com.microsoft.sqlserver.jdbc.SQLServerException: El valor no está configurado para el número de parámetro 3.
### The error may involve cl.itau.motor.dao.NotificacionDAO.actualizaConfigNotif-Inline
### The error occurred while setting parameters
### SQL: {call sp_actualizaConfigNotif(?,?,?)}
### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: El valor no está configurado para el número de parámetro 3.
; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; El valor no está configurado para el número de parámetro 3.; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: El valor no está configurado para el número de parámetro 3

Итак, как правильно вернуть параметр OUT с моим батисом?

Версия:

  • JAVA 8
  • SQL Server 2014
  • MyBatis 3.2.1
...