1. 测试表如下,
select * from tb
/*
姓名 课程 分数
---- ----- -----
张三 语文 90
张三 数学 83
李四 语文 74
李四 数学 84
李四 物理 94
*/
--将转换以下格式输出
SELECT 姓名,课程,分数 FROM tb FOR XML RAW('ROW'),Root('TB'),Elements
<TB>
<ROW>
<姓名>张三</姓名>
<课程>语文</课程>
<分数>90</分数>
</ROW>
<ROW>
<姓名>张三</姓名>
<课程>数学</课程>
<分数>83</分数>
</ROW>
<ROW>
<姓名>李四</姓名>
<课程>语文</课程>
<分数>74</分数>
</ROW>
<ROW>
<姓名>李四</姓名>
<课程>数学</课程>
<分数>84</分数>
</ROW>
<ROW>
<姓名>李四</姓名>
<课程>物理</课程>
<分数>94</分数>
</ROW>
</TB>
2. 在控制流中新建【执行 SQL 任务】和【脚本任务】
3. 编辑【执行 SQL 任务】,结果集为 XML
输入执行语句:
SELECT 姓名,课程,分数 FROM tb FOR XML RAW('ROW'),Root('TB'),Elements
4.新建一个类型为Sting的变量【User::XMLData】。【执行 SQL 任务】设计完成。
5. 编辑【脚本任务】,选择变量值为【User::XMLData】,读写都行。
6. 接着编辑上图中的【编辑脚本】,输入以下代码。【脚本任务】设计完成。
public void Main()
{
// TODO: Add your code here
System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument();
xdoc.InnerXml = Dts.Variables["XMLData"].Value.ToString();
xdoc.Save(@"F:\Output.xml");
Dts.TaskResult = (int)ScriptResults.Success;
}
7. 编译文件,会生成一个文件【 F:\Output.xml】