I've been struggling with this for a good 2.5 hours and could really use some help. There can be any number of ATTACHMENTS included and I'm trying to pull out the FILENAME and DESCRIPTION from each. Here's my code (excuse the mess) I would greatly appreciate any help you can give. Thanks!
DECLARE
@myXML XML = NULL
,@hDoc INT = 0
,@Num VARCHAR(2)
,@Type VARCHAR(5)
,@FileName VARCHAR(32) = ''
,@Description VARCHAR(256) = '';
SET @myXML = '
<REPORT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" DESCRIPTION="TestOrder" FILENUM="1234">
<ADDENDA>
<ATTACHMENTS>
<ATTACHMENT NUM="1" TYPE="1">
<FILENAME>4215.pdf</FILENAME>
<DESCRIPTION>Sales Contract</DESCRIPTION>
<CONTENT>...</CONTENT>
</ATTACHMENT>
<ATTACHMENT NUM="2" TYPE="1">
<FILENAME>6719.pdf</FILENAME>
<DESCRIPTION>Contract Instruction</DESCRIPTION>
<CONTENT>...</CONTENT>
</ATTACHMENT>
</ATTACHMENTS>
</ADDENDA>
</REPORT>';
----------------------------------------------------------------------------
EXEC sp_xml_preparedocument @hDoc OUTPUT, @myXML;
----------------------------------------------------------------------------
-- Begin get required docs
DECLARE xDocsCursor CURSOR FOR
SELECT *
FROM OPENXML (@hDoc, '/REPORT/ADDENDA/ATTACHMENTS/ATTACHMENT',1)
WITH ([NUM] varchar(32),
[TYPE] varchar(5))
WHERE [NUM] IS NOT NULL;
OPEN xDocsCursor;
FETCH NEXT FROM xDocsCursor INTO @Num, @Type;
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @Num, @Type;
-------------------
FETCH NEXT FROM xDocsCursor INTO @Num, @Type;
END
CLOSE xDocsCursor;
DEALLOCATE xDocsCursor;
-- End get required docs /REPORT/TRACKING/REQUIREDDATA
----------------------------------------------------------------------------
----------------------------------------------------------------------------
EXEC sp_xml_removedocument @hDoc;
----------------------------------------------------------------------------

OPENXML()?