Я ожидал, что от режима множественного выбора будет вести себя так же нормально, пока не будет нажата никакая специальная клавиша. Я имею в виду, что если у вас выбрана строка и вы щелкнете по другой без нажатой другой клавиши, тогда она должна выбрать новую и отменить выбор старой строки. Что ж, стандартные параметры jqGrid позволяют вам выбирать между всегда обычным поведением или всегда множественным выбором. Я получаю сообщение об ошибке: «Строка или двоичный файл будут усечены. Невозможно вставить значение NULL в столбец 'colname', tbale '...
У меня есть довольно большой nvarchar, который я хочу передать функции HashBytes. Я получаю сообщение об ошибке:
«Строка или двоичный файл будут усечены. Невозможно вставить значение NULL в столбец 'colname', tbale 'table'; столбец не допускает значений NULL. ОБНОВИТЬ терпит неудачу. Заявление было завершено. "
Будучи всегда находчивым, я обнаружил, что это произошло из-за того, что функция HashBytes имеет максимальный предел в 8000 байт. Дальнейший поиск показал мне« решение », в котором мой большой varchar будет разделен и хеширован отдельно, а затем объединен с эта пользовательская функция:
function [dbo].[udfLargeHashTable] (@algorithm nvarchar(4), @InputDataString varchar(MAX))
RETURNS varbinary(MAX)
AS
BEGIN
DECLARE
@Index int,
@InputDataLength int,
@ReturnSum varbinary(max),
@InputData varbinary(max)
SET @ReturnSum = 0
SET @Index = 1
SET @InputData = convert(binary,@InputDataString)
SET @InputDataLength = DATALENGTH(@InputData)
WHILE @Index <= @InputDataLength
BEGIN
SET @ReturnSum = @ReturnSum + HASHBYTES(@algorithm, SUBSTRING(@InputData, @Index, 8000))
SET @Index = @Index + 8000
END
RETURN @ReturnSum
END
, которую я вызываю с помощью:
set @ReportDefinitionHash=convert(int,dbo.[udfLargeHashTable]('SHA1',@ReportDefinitionForLookup))
Где @ReportDefinitionHash - это int, а @ReportDefinitionForLookup - это varchar
Передача простого char, такого как 'test', приводит к другому int с моим UDF, чем обычный вызов в HashBytes.
Какие-нибудь советы по этому поводу?