ALTER PROCEDURE [dbo].[GetProductList1] @Products XML AS BEGIN SET NOCOUNT ON DECLARE @Pointer INT DECLARE @TempCard TABLE ( ProductID INT NOT NULL ) BEGIN TRY EXECUTE sp_xml_preparedocument @Pointer OUTPUT, @Products INSERT @TempCard(ProductID) SELECT ProductID FROM OpenXML (@Pointer,'/Products/Product', 1) WITH ( ProductID INT) EXEC sp_xml_removedocument @Pointer SET @Pointer = 0 SELECT tc.ProductID, p.SalePrice FROM @TempCard tc INNER JOIN dbo.Product p ON tc.ProductID = p.PID END TRY BEGIN CATCH IF (@Pointer <> 0) BEGIN EXEC sp_xml_removedocument @Pointer SET @Pointer = 0 END RETURN -1 END CATCH END