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" 是重复的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29512902/viewspace-1591170/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29512902/viewspace-1591170/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值