CREATE PROCEDURE XMLATTR$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', 1)
       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 XMLATTR$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', 1)
       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 XMLATTR$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', 1)
       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 XMLATTR$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', 1)
       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