Создайте функцию CheckModulo11, которая проверяет, является ли данный accountNr действительным числом, используйте эту функцию в предложении проверки в таблице со столбцом, который представляет accountNr. (Вам необходимо создать таблицу для хранения accountNr, добавив ограничение и попытаться вставить данные в таблицу).
Подробный вопрос
Мой код:
create function CheckModulo11(@accountNr int)
returns @tableModulo11 table(
modulo_nr int,
number int,
total int,
status char(5)
)
as
BEGIN
Declare @tmpTable table(
modulo_nr int,
number int,
total int,
status char(5)
)
Declare @length int, @counter int = 1, @value int, @total int, @changeNums char(10);
SET @changeNums = CONVERT(char(10), @accountNr);
Set @length = LEN(@changeNums);
while @length > 0
BEGIN
SET @value = CONVERT(int,SUBSTRING(@changeNums, @length, 1))
insert into @tmpTable
(modulo_nr, number, total, status) values
(@counter, @value, (@counter * @value), '-');
SET @total = @total + (@counter * @value);
SET @length = @length - 1;
SET @counter = @counter + 1;
END
IF @total % 11 = 0
insert into @tmpTable (modulo_nr, number, total, status) values ('', '', @total, 'valid');
ELSE
insert into @tmpTable (modulo_nr, number, total, status) values ('', '', @total, 'not valid');
insert into @tableModulo11
SELECT * FROM @tmpTable
return
END
GO
select * from dbo.CheckModulo11(972428577);
Сообщение об ошибке:
Сообщение 8152, уровень 16, состояние 14, строка 185Строка или двоичные данные будут проигнорированы. Заявление было прекращено.