IN
должно быть следующим:
... IN (@ param1, @ param2, ...)
Итак, вы должны сделать:
SELECT DISTINCT Details from tbData WHERE Name IN (@svt) AND Address=@ser
Обновление:
Синтаксически неправильное утверждение процедуры alter, указанное вами в вашем вопросе.В моем ответе указан правильный синтаксис для написания заявления, и он компилируется.
Повторно читая ваш вопрос, я вижу, что на самом деле у вас есть две проблемы.Первой была синтаксическая ошибка, а вторая передача списка с разделителями-запятыми в одном параметре.
Ответ: вы просто не можете предоставить список значений с разделителями-запятыми во время выполнения в один параметр строкового типа, который используетсяв предложении IN (...)
.Теперь, что касается второго пункта, я бы сказал, что это не очень хороший подход к проектированию / программированию, но это можно сделать с помощью динамического SQL или анализа каждого значения из строкового параметра, сохранить их во временной таблице и затем пересмотреть.Ваш запрос присоединиться к этому, или использовать (или использовать табличную функцию и сохранить проанализированные элементы там, откуда ее можно запросить.
Ниже приведен исправленный синтаксис для вашего кода, но он не будетРешите второй аспект передачи строки, содержащей список значений, разделенных запятыми. Это можно решить, как я описал выше.
Для синтаксической ошибки сначала вы можете создать фиктивную таблицу для проверки вашего кода.Обратите внимание, что типичная таблица базы данных должна иметь первичный ключ. Это строго фиктивная таблица для проверки оператора:
CREATE TABLE TbData (Имя nvarchar (255), Подробности nvarchar (255), Адрес nvarchar (255));
Затем вы можете создать начальную хранимую процедуру:
CREATE PROCEDURE Test (@ser nvarchar (255)), @svt nvarchar (255)) КАК НАЧАТЬ ВЫБРАТЬ РАЗЛИЧНЫЕ ДЕТАЛИ ОТ tbData WHERE Имя IN (@ser) И Адрес = @svt END
И, наконец, выполните оператор alter хранимой процедуры, о котором вы спрашивали:
Тест ALTER PROCEDURE (@ser nvarchar (255), @svt nvarchar (255)) КАК НАЧИНАЕТСЯ ВЫБРАТЬ ОТЛИЧИЯ Подробности ОТ tbData ГДЕ IN IN (@ser) И Address = @svt END