Pokud je to možné, nepoužívejte pro tento druh věcí varchar, použijte tabulku hodnotný parametr místo toho.
Chcete-li použít parametr tabulky hodnoty, měli byste nejprve deklarovat uživatelsky definovaný typ tabulky:
CREATE TYPE IntList As Table
(
IntValue int
)
Potom změňte uloženou proceduru tak, aby přijímala tuto proměnnou namísto nvarchar:
create proc Sp_ReturnPrdoucts
@BrandIds dbo.IntList readonly -- Note: readonly is a must!
AS
BEGIN
SELECT *
FROM tbl_Products as p
join tbl_Brands b on p.ProductBrandId=b.BrandId
join @BrandIds ON(b.BrandId = IntValue)
END
Problém je v tom, že IN()
Operátor očekává seznam proměnných oddělených čárkami, zatímco vy zadáte jednu proměnnou, jejíž hodnotou je řetězec oddělený čárkami.
Pokud nemůžete použít parametr s hodnotou tabulky, můžete použít funkci rozdělení řetězce v sql k převodu hodnoty varchar na tabulku ints. existuje mnoho splitterů, doporučuji přečíst tento článek před výběrem jednoho.