Napíšete si pomocnou funkci:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
*************************************************************************
Funkce f_ListToTable
Popis:
Funkce vrací tabulku hodnot ze seznamu hodnot oddělených čárkou (bez mezer, např. '1,2')
*************************************************************************
*/
ALTER FUNCTION [dbo].[f_ListToTable]
(@List text)
RETURNS @RetTbl TABLE (Value int)
AS
BEGIN
DECLARE @Start int
DECLARE @Value varchar(15)
DECLARE @Char varchar(1)
SET @Start = 1
SET @Value = ''
SET @Char = '-'
WHILE NOT (LEN(@Char) = 0)
BEGIN
SET @Char = SUBSTRING(@List, @Start, 1)
IF @Char = ','
BEGIN
INSERT INTO @RetTbl VALUES (CAST(@Value AS int))
SET @Value = ''
END
ELSE
BEGIN
SET @Value = @Value + ISNULL(@Char,'')
END
SET @Start = @Start + 1
END
IF NOT @Value = ''
BEGIN
INSERT INTO @RetTbl VALUES (CAST(@Value AS int))
END
RETURN
END
A potom v tom SQLku můžete mít:
WHERE IDVyrobek IN (SELECT Value FROM dbo.f_ListToTable(@SeznamIDVyrobek))
kde parametr @SeznamIDVyrobek je typu text a bude obsahovat seznam IDček oddělený čárkou (např. "1,2"). Pokud potřebujete jiný oddělovač upravte si tu funkci f_ListToTable.
|