0
我寫了一個存儲過程來更新我的BangPhuTroiGioDay_GiangVien
表2列CongTrinhCD
和CongTrinhTC
這樣的:使用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.But中的最後一行,但它只更新第一行。你能幫我嗎? – Khanh 2012-02-22 07:19:26