我有以下密码,

@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 through循环,我想在后面插入它
我尝试了SET @MasterXML.modify(' insert sql:variable("@xml") as last into (Fields)[1] ' ),但生成的字段不相加。
有人能帮我吗?

最佳答案

@MasterXML具有默认的命名空间,因此需要使用该命名空间引用节点。

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]');

注意,要添加到http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition的xml中的元素不使用名称空间,因此将为这些元素添加@MasterXML。如果希望它们是同一名称空间的一部分,则必须在xmlns=""查询中指定。
Add Namespaces to Queries with WITH XMLNAMESPACES

关于sql-server - 在特定节点SQL Server上插入Xml,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49525146/

10-10 11:05