高手请进,在线等待:从SQL导出指定格式的XML文件
现有主表(销售人员表),次表(销售明细表),欲把这两表的数据导出指定格式的XML文件(格式如下),请问如何导出?又因为数据库服务器名、数据库名、数据库用户名及密码、导出文件完整路径等参数,都要求可以灵活设置。因此,敬请高手给出一存储过程,把灵活可设置的参数做为存储过程参数,谢谢。     
  <?xml   version= "1.0 "   encoding= "GBK "?>  
  <data   version= "1.0 "   >  
  <!--第一位销售员销售明细开始-->  
        <!--主表开始   -->  
        <main>  
    	 <id> p1 </id>  
    	 <name> 张三 </name>    	 
        </main>  
        <!--主表结束   -->  
        <!--明细表开始   -->  
        <detail>  
 	 <ID> c1 </ID>  
    	 <ParentID> p1 </ParentID>  
    	 <productname> 产品1 </productname>  
        </detail>    
        <detail>  
    	 <ID> c2 </ID>  
    	 <ParentID> p1 </ParentID>  
    	 <productname> 产品2 </productname>  
        </detail>  
           <!--明细表结束   -->  
  <!--第一位销售员销售明细结束-->          
  <!--第二位销售员销售明细开始-->  
        <!--主表开始   -->  
        <main>  
    	 <id> p2 </id>  
    	 <name> 李四 </name>    	 
        </main>  
        <!--主表结束   -->  
        <!--明细表开始   -->  
        <detail>  
 	 <ID> c3 </ID>  
    	 <ParentID> p2 </ParentID>  
    	 <productname> 产品3 </productname>  
        </detail>    
        <detail>  
    	 <ID> c4 </ID>  
    	 <ParentID> p2 </ParentID>  
    	 <productname> 产品4 </productname>  
        </detail>  
           <!--明细表结束   -->  
  <!--第二位销售员销售明细结束-->  
  </data>
------解决方案--------------------测试表: 
 drop table main,detail 
 create table main(id varchar(20),name varchar(20)) 
 insert main select  'p1 ', '张三 ' 
 union all select  'p2 ', '李四 ' 
 create table detail(id varchar(20),ParentID varchar(20),productname varchar(20)) 
 insert detail select  'c1 ', 'p1 ', '产品1 ' 
 union all select  'c2 ',  'p1 ', '产品2 ' 
 处理函数和存储过程: 
 create function linksql(       
 @id varchar(20)) 
 returns varchar(8000) 
 begin 
 declare @v1 varchar(8000) 
 select @v1= ' ' 
 select  @v1=(case when [id] is not null then   
 @v1+ ' <ID>  '+[id]+ ' </ID>  <ParentID>  '+@id+ ' </ParentID>  <productname>  '+productname+ ' </productname>  '  
 else null end) 
 from detail where ParentID=@id 
 return (case when @v1 <>  ' ' then  ' <detail>  '+@v1+ ' </detail>  ' else null end) 
 end 
 go 
 IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME= 'p1 ' AND TYPE= 'p ')DROP PROC P1 
 GO   
 create proc p1  
 @dbname varchar(20), 
 @srvname varchar(30), 
 @filepath varchar(50), 
 @username varchar(20), 
 @psw varchar(30) 
 as 
 begin 
 declare @var varchar(8000) 
 exec( 
  ' if exists(select * from sysobjects where name= ' 'aa ' ' and type= ' 'U ' ' ) drop table master.dbo.aa  
 select  ' ' <!--主表开始 -->  <m