0

次のように、変数@xml_dataで返されるXML形式のデータを取得するストアドプロシージャにクエリがあります。

SELECT @xml_data = (
    SELECT * FROM (
        SELECT   1 AS Tag
                ,0 AS Parent
                .....
        FROM    MyTable
        WHERE   id = @id

        UNION ALL

        SELECT   2 AS Tag
                ,1 AS Parent
                ....
        FROM    MyTable2
        WHERE   id = @id

        UNION ALL

        SELECT   3 AS Tag
                ,2 AS Parent
                ....
        FROM    MyTable3
        WHERE   id = @id
    ) results
FOR XML EXPLICIT, TYPE)

これはことわざの夢のように機能しています:)

ただし、ヘッダーをこのXMLに連結したいので(例<xml version="1.0" encoding="ISO-8859-1"/>)、その方法がわかりません。1つのステートメントで2つの変数を選択して、に変換しようとしましたNVARCHARが、正しく取得できないようです。

誰か助けてもらえますか?

ありがとう :)

4

3 に答える 3

1

このようにしてみてください:

DECLARE @x xml 
DECLARE @strXML varchar(MAX)
SET @x=N'<Employee><Name>Luftwaffe</Name></Employee>'
set @strXML = '<xml version="1.0" encoding="ISO-8859-1"/>' + CONVERT(varchar(MAX),@x)
SELECT @strXML  

それが役に立てば幸い !

于 2012-10-08T18:02:24.610 に答える
1

最初に文字列を宣言して、それらを連結するだけです。

declare @xml_data nvarchar(MAX)

set @xml_data = '<xml version="1.0" encoding="ISO-8859-1"/>'

SELECT @xml_data = @xml_data +  (
    SELECT * FROM (
        SELECT   1 AS Tag
                ,0 AS Parent
                .....
        FROM    MyTable
        WHERE   id = @id

        UNION ALL

        SELECT   2 AS Tag
                ,1 AS Parent
                ....
        FROM    MyTable2
        WHERE   id = @id

        UNION ALL

        SELECT   3 AS Tag
                ,2 AS Parent
                ....
        FROM    MyTable3
        WHERE   id = @id
    ) results
FOR XML EXPLICIT, TYPE)
于 2012-10-08T18:10:58.557 に答える