【发布时间】:2011-07-07 13:09:31
【问题描述】:
为了更新大量记录,我使用了 xml 查询。我从前端(C#.net)填充 xml 并将其作为参数传递给存储过程(如 @Master_rows_xml_Update)。
我面临一种情况..当我在存储过程中执行此命令时
declare @i INTEGER,@Master_rows_xml_Update XML;
SET @Master_rows_xml_Update= '<root>
<row Id="1" FinYearId="5" EmployeeId="55" EnteredOn="7/1/2011 12:00:00 AM" EnteredBy="1" HouseRentPaid="False" HouseRentAmount="3500.00" officeId="9"/>
<row Id="2" FinYearId="5" EmployeeId="55" EnteredOn="7/1/2011 12:00:00 AM" EnteredBy="1" HouseRentPaid="False" HouseRentAmount="3500.00" officeId="9"/>
</root>';
exec sp_xml_preparedocument @i output, @Master_rows_xml_Update;
update EmployeeFinYearInvestment
set EmployeeFinYearInvestment.FinYearId = ox.FinYearId,
EmployeeFinYearInvestment.EmployeeId = ox.EmployeeId,
EmployeeFinYearInvestment.EnteredOn = ox.EnteredOn,
EmployeeFinYearInvestment.EnteredBy = ox.EnteredBy,
EmployeeFinYearInvestment.HouseRentPaid = ox.HouseRentPaid,
EmployeeFinYearInvestment.HouseRentAmount = ox.HouseRentAmount,
EmployeeFinYearInvestment.officeId=ox.officeId
from OpenXml(@i, 'root/row')
with (Id INT,FinYearId INT, EmployeeId INT,EnteredOn DATETIME,EnteredBy INT , HouseRentPaid BIT,HouseRentAmount DECIMAL ,officeId INT ) ox
where EmployeeFinYearInvestment.Id = ox.Id;
exec sp_xml_removedocument @i;
..它无法更新下表的操作...
程序也没有返回任何错误...
任何想法...
谢谢.. 阿尼尔班
【问题讨论】:
-
您是否尝试调试此代码?它如何选择xml?
EmployeeFinYearInvestment.Id = ox.Id;子句中的项目是否存在?
标签: sql sql-server-2005