Установите MAXVALUE с помощью кода позади C# в SQL ПОСЛЕДОВАТЕЛЬНОСТЬ сервера - PullRequest
0 голосов
/ 28 апреля 2020

Я начинаю разрабатывать систему назначения для нескольких служб. Каждая служба имеет ограничение на количество посетителей в день.

ПРИМЕР: служба X может обрабатывать до 100 случаев в день.

Я создал хранимую процедуру для создания SEQUENCE с эти условия:

  1. Dynami c ПОСЛЕДОВАТЕЛЬНОСТЬ имя по коду позади C# ASP. NET.
  2. Dynami c MAXVALUE по коду позади C# ASP. NET.
  3. Сброс в 12:00.
  4. Recycle
ALTER PROCEDURE [dbo].[sp_sequence_create]
     @seq_name_para nvarchar(30),
     @seq_max_val  nvarchar(30)
AS
BEGIN
    DECLARE @seqname nvarchar(30) = @seq_name_para
    DECLARE @seq_max nvarchar(30) = @seq_max_val

    DECLARE @SQLcreatestring NVARCHAR(MAX) = 
        'IF OBJECT_ID(''[dbo].['+@seqname+']'') IS NULL
         BEGIN
             CREATE SEQUENCE ['+@seqname+'] 
             AS [bigint]
             START WITH 1
             INCREMENT BY 1
             MINVALUE 1
             MAXVALUE 40
             NO CACHE 
         END
         ELSE
         BEGIN
             ALTER SEQUENCE ['+@seqname+'] MAXVALUE ['+@seq_max+'] '

    EXEC(@SQLcreatestring)
END

Я передаю имя последовательности параметров и максимальное значение хранимой процедуре создание последовательности.

Ошибка при выполнении:

Ошибка преобразования типа данных nvarchar в bigint

Я пытался изменить на целое число

@seq_max bigint = @seq_max_val

Теперь появляется другая ошибка.

Пожалуйста - у кого-нибудь есть идея или другая структура для системы назначения?

...