Anuragintit Ответов: 3

Передача параметров, разделенных запятыми, в хранимую процедуру


Мне нужно передать хранимую процедуру parameterin следующим образом
'abc','xyz','cde','efg'


создать процедуру PrcName
@anyID varchar(Макс)

как
начать

ВЫБИРАТЬ *
С моего стола
Где именно mytable.id IN (@anyID)
конец

Что я уже пробовал:

Msg 102, Уровень 15, Состояние 1, Строка 5
Неправильный синтаксис рядом с ','.

3 Ответов

Рейтинг:
13

MadMyche

То, что вы ищете, - это String_Split функция в SQL Server. Это функция с табличным значением, которая возвращает строки из входной строки.

CREATE PROCEDURE PrcName (
  @anyID varchar(max)
) AS
BEGIN
  SELECT *
  FROM   mytable
  WHERE  mytable.id IN (
    SELECT value
    FROM   String_Split(@anyID, ' ')
  )
END

Эта функция является собственной начиная с SQL Server 2016. Для более старых версий существует множество вариантов этой функции, доступных для создания.

Ссылка: STRING_SPLIT (Transact-SQL) - SQL Server | Microsoft Docs[^]


Anuragintit

Спасибо, работает отлично