5

SQL Server 2008では、クエリがあります

DECLARE @root AS varchar(20);
SET @root = 'Root';

DECLARE @element AS varchar(20);
SET @element = 'Element';

SELECT
    *
FROM 
    SomeTable
FOR XML PATH (@element), ROOT(@root);

私が望むのは、繰り返し要素とルートの名前をハードコーディングする代わりに、変数を渡すことです。

クエリを実行すると、次のエラーがスローされます。

Msg 102, Level 15, State 1, Line 11
Incorrect syntax near '@element'.

出来ますか?

ありがとう

4

2 に答える 2

3

動的 SQL を試す -

DECLARE 
  @Root VARCHAR(20)
, @Element VARCHAR(20)
, @SQL NVARCHAR(500)

SELECT 
  @Root = 'Root'
, @Element = 'Element'
, @SQL = N'
 SELECT *
 FROM Labour.Absence a
 FOR XML PATH (''' + @Element + '''), ROOT(''' + @Root + ''')' 

PRINT @SQL

EXEC sp_executesql @SQL
于 2013-04-10T10:46:23.197 に答える