У вас есть несколько неправильных вещей:
♦ Вы передаете переменную @stringList
и просто используете ее для заполнения табличной переменной @t
.
♦ Вы используетеWHILE
цикл, который будет работать медленно, и он там вообще не нужен.
♦ Вы выбираете данные из dbo.Verses
, но в столбце VerseContent
, например, число, хранящееся в переменной @j
,поэтому вы не будете искать в этой таблице в соответствии со значениями, сгенерированными SPLIT_STRING()
, как вы думаете.
♦ Если вы посмотрите на синтаксис создания хранимой процедуры, вы обнаружите, что естьне надо AS BEGIN
.См. CREATE PROCEDURE
синтаксис.
Наконец, из того, что вы предоставляете, и из того, что я понимаю, вы пытаетесь сделать как
CREATE PROCEDURE dbo.ListSearch
(
@stringList varchar(500)
)
AS
SET NOCOUNT ON;
SELECT V.*
FROM STRING_SPLIT(@StringList, ',') Str
JOIN dbo.Verses V
ON V.VerseContent LIKE CONCAT('%', Str.Value, '%');