CREATE PROCEDURE XMLELEM$OPEN_Int_JOIN_test @str nvarchar(MAX), @tookms int OUTPUT AS DECLARE @start datetime, @idoc int, @err int SELECT @start = getdate() EXEC @err = sp_xml_preparedocument @idoc output, @str SELECT @err = @@error + coalesce(@err, 4711) IF @err <> 0 RETURN @err INSERT Int_JOIN(word) SELECT u.word FROM usrdictwords u JOIN OPENXML(@idoc, '/Root/Num', 2) WITH (num int) AS a ON u.wordno = a.num EXEC sp_xml_removedocument @idoc SELECT @tookms = datediff(ms, @start, getdate()); SELECT word FROM Int_JOIN TRUNCATE TABLE Int_JOIN go CREATE PROCEDURE XMLELEM$OPEN_Int_UNPACK_test @str nvarchar(MAX), @tookms int OUTPUT AS DECLARE @start datetime, @idoc int, @err int SELECT @start = getdate() EXEC @err = sp_xml_preparedocument @idoc OUTPUT, @str SELECT @err = @@error + coalesce(@err, 4711) IF @err <> 0 RETURN @err INSERT Int_UNPACK(number) SELECT num FROM OPENXML(@idoc, '/Root/Num', 2) WITH (num int) EXEC sp_xml_removedocument @idoc SELECT @tookms = datediff(ms, @start, getdate()); SELECT number FROM Int_UNPACK TRUNCATE TABLE Int_UNPACK go CREATE PROCEDURE XMLELEM$OPEN_Str_JOIN_test @str nvarchar(MAX), @tookms int OUTPUT AS DECLARE @start datetime, @idoc int, @err int SELECT @start = getdate() EXEC @err = sp_xml_preparedocument @idoc output, @str SELECT @err = @@error + coalesce(@err, 4711) IF @err <> 0 RETURN @err INSERT Str_JOIN(wordno, guid) SELECT u.wordno, u.guid FROM usrdictwords u JOIN OPENXML(@idoc, '/Root/Word', 2) WITH (Item nvarchar(50)) AS a ON u.word = a.Item EXEC sp_xml_removedocument @idoc SELECT @tookms = datediff(ms, @start, getdate()); SELECT wordno FROM Str_JOIN TRUNCATE TABLE Str_JOIN go CREATE PROCEDURE XMLELEM$OPEN_Str_UNPACK_test @str nvarchar(MAX), @tookms int OUTPUT AS DECLARE @start datetime, @idoc int, @err int SELECT @start = getdate() EXEC @err = sp_xml_preparedocument @idoc output, @str SELECT @err = @@error + coalesce(@err, 4711) IF @err <> 0 RETURN @err INSERT Str_UNPACK(word) SELECT Item FROM OPENXML(@idoc, '/Root/Word', 2) WITH (Item nvarchar(50)) EXEC sp_xml_removedocument @idoc SELECT @tookms = datediff(ms, @start, getdate()); SELECT word FROM Str_UNPACK TRUNCATE TABLE Str_UNPACK go