0
Я написал хранимую процедуру для обновления 2 колонки CongTrinhCD
и CongTrinhTC
в моей BangPhuTroiGioDay_GiangVien
таблице, как это:Использование XMLDATA для обновления таблицы
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"
Я не знаю почему? Может мне помочь? Спасибо всем.
Я уверен. Я хочу, чтобы он обновлял последнюю строку в xmlData. Но она обновляет только первую строку. Можете ли вы мне помочь? – Khanh