SQL Выполнение хранимой процедуры несколько раз - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть хранимая процедура, которая будет удалять из таблицы ausers на основе идентификатора, который я передаю. Если бы мне нужно было удалить нескольких пользователей или диапазон идентификаторов, есть ли способ сделать это?

Идентификаторы - Ints.

1 Ответ

0 голосов
/ 13 декабря 2018

Вы должны создать одну функцию, которая будет использоваться для разделения строки, и вы можете передать параметр через запятую

Function
---------------
CREATE FUNCTION SplitString
(    
      @Input NVARCHAR(MAX),
      @Character CHAR(1)
)
RETURNS @Output TABLE (
      Item NVARCHAR(1000)
)
AS
BEGIN
      DECLARE @StartIndex INT, @EndIndex INT

      SET @StartIndex = 1
      IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character
      BEGIN
            SET @Input = @Input + @Character
      END

      WHILE CHARINDEX(@Character, @Input) > 0
      BEGIN
            SET @EndIndex = CHARINDEX(@Character, @Input)

            INSERT INTO @Output(Item)
            SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1)

            SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input))
      END

      RETURN
END
GO

Store Procedure
----------------------
DECLARE @CustomerID VARCHAR(50) = '1,2,3'

DELETE FROM Customer WHERE CustomerID in (SELECT Item
FROM dbo.SplitString(@CustomerID, ','))

Надеюсь, это поможет вам:)

...