CREATE PROCEDURE GetContactsByQualities2 @XmlInc varchar(4000), @XmlExc varchar(4000) AS DECLARE @IdocInc int, @IdocExc int DECLARE @Qids TABLE (QID int, Qtype int) EXEC sp_xml_preparedocument @IdocInc OUTPUT, @XmlInc EXEC sp_xml_preparedocument @IdocExc OUTPUT, @XmlExc INSERT INTO @Qids SELECT *, +1 FROM OPENXML (@IdocInc, '/Root/QID',1) WITH (Val int) INSERT INTO @Qids SELECT *, -1 FROM OPENXML (@IdocExc, '/Root/QID',1) WITH (Val int) EXEC sp_xml_removedocument @IdocInc EXEC sp_xml_removedocument @IdocExc SELECT * FROM Contacts c WHERE (SELECT COUNT(*) FROM @Qids WHERE Qtype > 0) = (SELECT SUM(Qtype) FROM @Qids JOIN ContactQualities ON QID = ContactQualities.qualifierid WHERE ContactQualities.contactid = c.id) RETURN 0