结果出现下列提示:
服务器: 消息 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" 是重复的。