在特定节点SQL Server上插入Xml

Srinivasan Rajasekaran

我有以下代码,

@MasterXML= '
    <Report MustUnderstand="df" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:df="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition/defaultfontfamily">
      <DataSets>
        <DataSet Name="'+@Datasetname+'">
          <Query>
          </Query>
          <Fields>
          <Field>
          </Field>
          </Fields>
        </DataSet>
      </DataSets>
      </Report> '
    WHILE @i <= @Cnt
    BEGIN

    Select @xml=
     (  
      SELECT  @cname AS [@Name]
               ,@cname AS [DataField]
               ,'System.String' AS [rd:TypeName]
        FOR XML PATH('Field')
    );
    SET @i = @i + 1
    SET @MasterXML.modify(' insert sql:variable("@xml") as last into  (Fields)[1] ' )  
    end
    select @MasterXML

我正在通过循环生成XMLat @xml,我想在之后插入它

我试过了SET @MasterXML.modify(' insert sql:variable("@xml") as last into (Fields)[1] ' ),但是生成的字段没有加起来。

谁能帮我吗?

米凯尔·埃里克森(Mikael Eriksson)

@MasterXML具有默认的名称空间,http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition因此您需要使用该名称空间引用节点。

set @MasterXML.modify('
  declare default element namespace "http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition";
  insert sql:variable("@xml") as last into  (/Report/DataSets/DataSet/Fields)[1]');

请注意,要添加到XML中的元素@MasterXML不使用名称空间,因此将为xmlns=""您添加这些元素。如果希望它们成为同一名称空间的一部分,则必须在for xml查询中指定

使用WITH XMLNAMESPACES将名称空间添加到查询中

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章