SELECT * FROM OPENXML在sql2000、sql2005中使用的不同

最近有一个SQL Server应用进行库移植,原本运行在SQL2000下,移植到SQL2005下.
结果出现下列提示:
服务器: 消息 492,级别 16,状态 1,过程 sp_Parse_XML,行 20
在通过 OPENQUERY 和 OPENROWSET 获得的结果集中不允许有重复的列名。列名 "ST" 是重复的。
模块 'sp_proc_XML' 取决于缺少的对象 'sp_Parse_XML'。仍将创建此模块;但是,只有在该对象存在之后它才能成功运行。
经查看sp_Parse_XML的代码,其中有如下片段:
 insert into #tbl
 (CxCalcNo,TradeNo,TradeType,TradeOrg,TradeDep,ClsCode,
                                          BrandCode,PageNo,SeNo,PluID,Plucode,PluName,YsTotal,XsDate,
                                          YxTotal,ISUSED,ISCALC,Cardlxcode,Hyno)
 select @vs_CxCalcNo,SN,'1',Org,Dep,'','',1,1,iPI,'','',ST,XD,ST,'0','0',HyTp,HyNo
 FROM
  OPENXML   (@Pointer, '/IP',2)--第三个参数2,是以元素为中心的映射
  WITH  
            (  
  [Org]   varchar(10),
  [SN]    varchar(20), 
  [XD]    datetime,
  [HyTp] varchar(4),
  [HyNo]  varchar(20)
            ) ,
  OPENXML   (@Pointer, '//PluR',2) 
            WITH  
            (  
                [Dep]   varchar(50), 
                [iPI]   varchar(50),  
                ST     numeric(19,2),
                ST     numeric(19,2)
            )
测试了一下,结果是这样的:

在sql2000中SQL
SELECT *  FROM  OPENXML  XMLNAME  WITH (fld1,fld2,fld3,fld3)
with参数可以重复脚本执行不会报错

在sql2005中SQL
SELECT *  FROM  OPENXML  XMLNAME  WITH (fld1,fld2,fld3,fld3)
with参数不可以重复脚本执行会报错:
在通过 OPENQUERY 和 OPENROWSET 获得的结果集中不允许有重复的列名。列名 "fld3" 是重复的。

请使用浏览器的分享功能分享到微信等