0
を更新するために、私はこのように私のBangPhuTroiGioDay_GiangVien
表に2列CongTrinhCD
とCongTrinhTC
を更新するストアドプロシージャを書いた:使用XMLDATAは、テーブル
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>'
:私はパラメータを持つストアドプロシージャを実行すると
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
更新後の結果が
MaQuanLy="70100G07.000015" CongTrinhCD ="70" CongTrinhTC="20"
の結果は次のようになります。
MaQuanLy="70100G05.000015" CongTrinhCD ="50" CongTrinhTC="10"
なぜわかりませんか?私を助けることができますか?皆さんありがとう。
私は確信しています。xmlDataの最後の行を更新したいのですが、最初の行のみを更新します。 – Khanh