Ошибка в EXEC lin_GetAquireSkill

Gregory

Знаменитый
Участник
Сообщения
209
Розыгрыши
0
Репутация
81
Реакции
25
Баллы
1 295
Всем привет. Собственно столкнулся вот с такой проблемой. При смене сабкласса игроком, у него не загружаются скилы. В логе кэшеда вот такая ошибка. Странно, что выполнение EXEC lin_GetAquireSkill 6471, 0 отдельным запросом, даёт корректный список скилов. Но почему-то кэшед его получить не может.
Код:
07/17/2016 13:23:24.438, msgText [Microsoft][ODBC SQL Server Driver]Не предоставлена необходимая переменная индикатора
07/17/2016 13:23:24.438, sql EXEC lin_GetAquireSkill 6471, 0
07/17/2016 13:23:24.438, fetch error
07/17/2016 13:26:43.902, sqlstate 22002
07/17/2016 13:26:43.902, msgText [Microsoft][ODBC SQL Server Driver]Не предоставлена необходимая переменная индикатора
07/17/2016 13:26:43.902, sql EXEC lin_GetAquireSkill 5456, 1
07/17/2016 13:26:43.902, fetch error
07/17/2016 13:27:10.445, fetch error
07/17/2016 13:27:10.445, sqlstate 22002
07/17/2016 13:27:10.445, msgText [Microsoft][ODBC SQL Server Driver]Не предоставлена необходимая переменная индикатора
07/17/2016 13:27:10.446, sql EXEC lin_GetAquireSkill 5456, 0

Вот кок самой процедуры:
Код:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[lin_GetAquireSkill]
(
    @char_id    INT,
    @subjob_id    INT
)
AS
SET NOCOUNT ON
SELECT skill_id, skill_lev, to_end_time FROM user_skill WHERE char_id = @char_id AND ISNULL(subjob_id, 0) = @subjob_id ORDER BY 1, 2
 

В общем странная хрень. Дело было в таблице user_skill, поле to_end_time могло принимать значение NULL и содержало его, от чего скилы не подгружались. Я сделал апдейт всех полей NULL на 0 и скилы начали грузится, ошибка пропала.
Но следуя логике процедуры lin_SetAquireSkill, эта процедура при инсерте в user_skill вообще не учитывает поле to_end_time, тем самым по дуфолту указывая его как NULL. Дописал в инсерт поле to_end_time = 0. Этим проблема решилась.

Интересно бы было узнать, на что может повлиять отсутствие значения NULL в поле to_end_time.
 
Назад
Сверху Снизу