Question : Assign XML to variable from FOR XML Path

I am trying to assign an XML Variable with a SELECT...FOR XML PATH but I keep getting the error message

"The FOR XML clause is invalid in views, inline functions, derived tables, and subqueries when they contain a set operator. To work around, wrap the SELECT containing a set operator using derived table syntax and apply FOR XML on top of it."

Code Snippet:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
DECLARE @Doc XML,
        DepreciationTangibleFixedAssets INT,
        @Inventory INT,
        @CurrentYear INT

SELECT @CurrentYear = 2009, 
       @Inventory = 2000,
       @DepreciationTangibleFixedAssets = 5000

SELECT @Doc = 
(
SELECT 'DepreciationTangibleFixedAssets' AS '@TYPE', Convert(VARCHAR(20), @DepreciationTangibleFixedAssets ) "*" 
UNION
SELECT 'Inventory' AS '@TYPE', Convert(VARCHAR(20), @Inventory ) "*" 
UNION
SELECT 'CurrentYear' AS '@TYPE', Convert(VARCHAR(20), @CurrentYear ) "*" 
FOR XML PATH( 'ARGUMENT' ), ROOT('ARGUMENT-LIST')
)

SELECT @Doc

Answer : Assign XML to variable from FOR XML Path

try this
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
DECLARE @Doc XML,
        @DepreciationTangibleFixedAssets INT,
        @Inventory INT,
        @CurrentYear INT

SELECT @CurrentYear = 2009, 
       @Inventory = 2000,
       @DepreciationTangibleFixedAssets = 5000

SELECT @Doc =
(select * 
from
(
SELECT 'DepreciationTangibleFixedAssets' AS '@TYPE', Convert(VARCHAR(20), @DepreciationTangibleFixedAssets ) "*" 
UNION
SELECT 'Inventory' AS '@TYPE', Convert(VARCHAR(20), @Inventory ) "*" 
UNION
SELECT 'CurrentYear' AS '@TYPE', Convert(VARCHAR(20), @CurrentYear ) "*" 
) a
FOR XML PATH( 'ARGUMENT' ), ROOT('ARGUMENT-LIST')
)
SELECT @Doc
Random Solutions  
 
programming4us programming4us