12

次のような構造のテーブルがあります。


LocationID 口座番号
長いGUID-ここ 12345
長いGUID-ここ 54321

別のストアドプロシージャに渡すには、次のようなXMLが必要です。

<root> 
    <clientID>12345</clientID>
    <clientID>54321</clientID>
</root>

私がこれまでにできた最高のことは、次のようにすることでした。

<root clientID="10705"/>

私はこのSQLステートメントを使用しています:

SELECT
    1 as tag,
    null as parent,
    AccountNumber as 'root!1!clientID'
FROM
    Location.LocationMDAccount
WHERE
    locationid = 'long-guid-here'
FOR XML EXPLICIT

これまで、MSDNページのドキュメントを見てきましたが、希望する結果が得られませんでした。


@KG、

あなたは私にこの出力を実際に与えました:

<root>
  <Location.LocationMDAccount>
    <clientId>10705</clientId>
  </Location.LocationMDAccount>
</root>

私はFOR XML EXPLICIT今のところクリスレオンからに固執するつもりです。

4

5 に答える 5

3

試す

SELECT
    1 AS Tag,
    0 AS Parent,
    AccountNumber AS [Root!1!AccountNumber!element]
FROM
    Location.LocationMDAccount
WHERE
    LocationID = 'long-guid-here'
FOR XML EXPLICIT
于 2008-08-05T20:51:03.547 に答える
0

これを試してください、クリス:

SELECT
    AccountNumber as [clientId]
FROM
    Location.Location root
WHERE
    LocationId = 'long-guid-here'
FOR
    XML AUTO, ELEMENTS

ひどくごめんなさい!私はあなたが求めていたものを混同しました。メンテナンスを容易にするためにXMLAUTOの方が好きですが、どちらも効果的だと思います。見落としをお詫びします;-)

于 2008-08-05T20:53:13.230 に答える
0

私はそれを手に入れました:

select
1 as tag,
null as parent,
AccountNumber as 'root!1!clientID!element'
from
Location.LocationMDAccount
where
locationid = 'long-guid-here'
for xml explicit
于 2008-08-05T20:53:19.157 に答える
0
タグとして 1 を選択し、
       親としてnull、
       AccountNumber as 'clientID!1!!element'
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML EXPLICIT, root('ルート')
于 2011-10-31T11:28:56.920 に答える
0

SQL Server 2005 (またはおそらく 2008) を使用して、XML PATH を使用すると、XML Explicit よりも SQL の保守がはるかに簡単になることがわかりました (特に SQL が長くなると)。

この場合:

SELECT AccountNumber as "clientID"
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML PATH (''), Root ('root');
于 2008-08-17T06:45:16.703 に答える