Definesti parametrul procedurii de tip NVARCHAR. Cand apelezi procedura stocata ii transmiti lista de valori sub forma unei structuri in format XML.
Exemplu: <root> <parametru valoare="111"/> <parametru valoare="..."/> ... </root>
Procesezi datele in format XML transmise ca parametru (vezi @xml) cu ajutorul OPENXML.
Exemplu:
DECLARE @xml NVARCHAR(255)
SET @xml = '<root> <parametru valoare="111"/> <parametru valoare="222"/> <parametru valoare="333"/> </root>'
DECLARE @id_xml INT
EXEC sp_xml_preparedocument @id_xml OUTPUT, @xml
SELECT *
FROM Articol
WHERE IdArticol IN
(
SELECT valoare
FROM OPENXML (@id_xml, '/root/parametru') WITH ( valoare INT )
)
EXEC sp_xml_removedocument @id_xml
Sau inserezi valorile din @xml intr-o tabela (ex. variabila tabela; pp. ca nu sunt multe valori).
Exemplu:
DECLARE @xml NVARCHAR(255)
SET @xml = '<root> <parametru valoare="111"/> <parametru valoare="222"/> <parametru valoare="333"/> </root>'
DECLARE @tabel TABLE (parametru INT)
DECLARE @id_xml INT
EXEC sp_xml_preparedocument @id_xml OUTPUT, @xml
INSERT INTO @tabel (parametru)
SELECT valoare
FROM OPENXML (@id_xml, '/root/parametru') WITH ( valoare INT )
EXEC sp_xml_removedocument @id_xml
SELECT *
FROM Articol
WHERE IdArticol IN
(
SELECT parametru FROM @tabel
)