22,210
社区成员
发帖
与我相关
我的任务
分享
declare @col xml
set @col='<FlowTemplate Id="1c4f6937-d971-41f2-9b9c-2b502bf2b3bf" Name="keith20080630" Description="">
<FlowDocument Id="acee25f3-3fcb-48e9-aa02-0634a046ffc8" PageCount="0">
<FlowPage>
<ContentZone />
</FlowPage>
</FlowDocument>
<FlowActionProperty>
<ConvertToPdfProperty OcrLanguages="EN" Index="0" Action="good" />
<ImportToParaDocProperty UserName="" PassWord="" Index="1" Action="ImportToParaDoc" />
</FlowActionProperty>
<FlowActionProperty>
<ConvertToPdfProperty OcrLanguages="EN" Index="0" Action="good" />
<ImportToParaDocProperty UserName="" PassWord="" Index="1" Action="ImportToParaDoc" />
</FlowActionProperty>
<FlowActionProperty>
<ConvertToPdfProperty OcrLanguages="EN" Index="0" Action="good" />
<ImportToParaDocProperty UserName="" PassWord="" Index="1" Action="ImportToParaDoc" />
</FlowActionProperty>
<FlowProfile>
</FlowProfile>
</FlowTemplate>
'
set @col.modify('replace value of(/FlowTemplate/FlowActionProperty/ConvertToPdfProperty[@Action="good"]/@Action)[1] with "verygood"')
select @col
declare @cur_userid varchar(30)
declare @cur_xml xml
declare userCur Cursor For Select user_id from #result group by user_id
Open userCur
Fetch next From userCur Into @cur_userid
select @cur_xml=resultXml from ExamineeAnswer where onlinetest_id=@onlinetest_id and user_id=@cur_userid
print '@cur_xml1:'+cast(@cur_xml as varchar(max))
Declare @test_question_Id int
Declare @score decimal(8,2)
Declare Cur Cursor For Select test_question_Id,score From #answerquestion as q where @cur_userid=q.user_id and dbo.fun_equlasAnswer(q.questionAnswer, q.examineeAnswer)=1
Open Cur
Fetch next From Cur Into @test_question_Id,@score
While @@fetch_status=0
Begin
set @cur_xml.modify('replace value of (ArrayOfAnswerXml/AnswerXml/src_score[../test_question_Id[text()=sql:variable("@test_question_Id")]]/text())[1] with sql:variable("@score")')
Fetch Next From Cur Into @test_question_Id,@score
End
Close Cur
Deallocate Cur
print '@cur_xml2:'+cast(@cur_xml as varchar(max))
update ExamineeAnswer set resultXml=@cur_xml where onlinetest_id=@onlinetest_id and user_id=@cur_userid
Close userCur
Deallocate userCur
代码是这样的,查找出每个考生的试题答案,然后进行比较,正确就更改其对应分数
表结构是一个考试的每一个考生是一条记录,xml字段就存放考生该门考试所有的答案WHILE @col.exist('/FlowTemplate/FlowActionProperty/ConvertToPdfProperty[@Action="good"]') = 1
BEGIN
SET @col.modify('replace value of(/FlowTemplate/FlowActionProperty/ConvertToPdfProperty[@Action="good"]/@Action)[1] with "verygood"')
END
SET @col=CAST(REPLACE(CAST(@col AS VARCHAR(4000)),'Action="good"','Action="verygood"') AS XML)
--REPLACE貌似可以达到效果