我编写了一个存储过程来更新CongTrinhCD
表格中的2列CongTrinhTC
和BangPhuTroiGioDay_GiangVien
,如下所示:
CREATE proc [dbo].[cust_BangPhuTroiGioDay_GiangVien_Luu]
@XmlData ntext
as
begin
declare @iDoc int ,@ReVal int
BEGIN TRANSACTION
exec sp_xml_preparedocument @iDoc output, @XmlData
update BangPhuTroiGioDay_GiangVien
set BangPhuTroiGioDay_GiangVien.CongTrinhCD = a.CTCD,
BangPhuTroiGioDay_GiangVien.CongTrinhTC = a.CTTC
from (
select
MaQuanLy as MaQL,CongTrinhCD as CTCD,CongTrinhTC as CTTC
from openxml(@iDoc,'Root/BangPhuTroi')
with (MaQuanLy varchar(20),CongTrinhCD int,CongTrinhTC int)
) a
where BangPhuTroiGioDay_GiangVien.MaQuanLy= a.MaQL
set @ReVal = @@error
if(@ReVal<>0)
begin
rollback tran
return
end
commit tran
select @ReVal
return
end
当我使用参数执行存储过程时:
exec dbo.cust_BangPhuTroiGioDay_GiangVien_Luu
@XmlData=N'<Root>
<BangPhuTroi MaQuanLy="70100G05.000015" CongTrinhCD ="50"
CongTrinhTC="10"></BangPhuTroi>
<BangPhuTroi MaQuanLy="70100G07.000015" CongTrinhCD ="70"
CongTrinhTC="20"></BangPhuTroi>
<BangPhuTroi MaQuanLy="70100G07.000052" CongTrinhCD ="80"
CongTrinhTC=""></BangPhuTroi>
</Root>'
我希望更新后的结果是:
MaQuanLy="70100G07.000015" CongTrinhCD ="70" CongTrinhTC="20"
但结果更像是这样:
MaQuanLy="70100G05.000015" CongTrinhCD ="50" CongTrinhTC="10"
我不知道为什么?可以帮我?谢谢大家。
答案 0 :(得分:1)
您确定要查看正确的行吗? MaQuanLy值在两行之间是不同的。