2012-04-07 6 views
1

FOR XMLクエリの結果をテキストとして取得しようとしています。 私はここでいくつかの同様の質問を見つけました: Using SQL Server "FOR XML": Convert Result Datatype to Text/varchar/string whatever? 私の場合は、私はXMLNAMESPACESステートメントを使用して、この解決策は私のために働くdoesnt。 次のクエリの結果をテキストとして取得するにはどうすればよいですか?SQL Server "FOR XML"を使用:結果をテキストに変換

WITH XMLNAMESPACES ('urn:blablablabla' as bi) 
SELECT 'urn:blablabla.xsd' AS "@xsi:schemaLocation", 

     (SELECT 'aaaa' AS 'bi:idValue', 
       'bbbb' AS 'bi:idContext' 
     FOR XML PATH('bi:Part1'),TYPE), 

     (SELECT 'cccc' AS 'bi:idValue', 
       'dddd' AS 'bi:idContext' 
     FOR XML PATH('bi:Part2'),TYPE) 
FOR XML PATH('bi:Items'), ELEMENTS XSINIL 

おかげ


が、結果は次のようになります。

<bi:Items xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bi="urn:blablablabla" xsi:schemaLocation="urn:blablabla.xsd"> 
<bi:Part1 xmlns:bi="urn:blablablabla"> 
<bi:idValue>aaaa</bi:idValue> 
<bi:idContext>bbbb</bi:idContext> 
</bi:Part1> 
<bi:Part2 xmlns:bi="urn:blablablabla"> 
<bi:idValue>cccc</bi:idValue> 
<bi:idContext>dddd</bi:idContext> 
</bi:Part2> 
</bi:Items 

私の目標は、テキストとしてではなくXMLデータ型として、この結果を得ることです。また

DECLARE @ResultText NVARCHAR(MAX) 
SET @ResultText = ... Returned text from this query ... 

は多分あなたは私が各ノードに名前空間の繰り返しを避けることができる方法を知っている:例えば はそのような何かを行うには?

あなたは

+1

あなたからの出力はどのように表示されるべきですか? – RBarryYoung

答えて

1

あなたはselect代わりのset使用する必要がありますありがとうございました。

DECLARE @ResultText NVARCHAR(MAX); 

WITH XMLNAMESPACES ('urn:blablablabla' as bi) 
SELECT @ResultText = 
    (
    SELECT 'urn:blablabla.xsd' AS "@xsi:schemaLocation", 

      (SELECT 'aaaa' AS 'bi:idValue', 
        'bbbb' AS 'bi:idContext' 
      FOR XML PATH('bi:Part1'),TYPE), 

      (SELECT 'cccc' AS 'bi:idValue', 
        'dddd' AS 'bi:idContext' 
      FOR XML PATH('bi:Part2'),TYPE) 
    FOR XML PATH('bi:Items'), ELEMENTS XSINIL 
); 

更新:名前空間

の繰り返し

避けるには、これら2つの答えによるとfor xml explicitでそれを行う方法があります。

FOR XML PATH and xsi:nil attributes
How do I remove redundant namespace in nested query when using FOR XML PATH

あなたは行動が、あなたがこの接続項目に投票することができ、将来のために変更したい場合。
suppress namespace attributes in nested SELECT FOR XML statements

+0

ありがとうございます! – BGO

+0

ようこそ。これがうまくいったら右の目盛りを使ってこの答えを受け入れることを検討するべきです。この質問に回答したコミュニティを表示します。 –

+0

はい、それは動作しますが、誰かが各ノードの名前空間の繰り返しを避ける方法を知っているかもしれません... – BGO

関連する問題