0
我可以使用XML文件將數據正確地插入到表中,但沒有我想知道是否可以使用XML文件更新列。 我有這樣的插入,它的工作原理:使用XML文件更新SQL Server列
IF @LAST_Question <> @QuestionText
BEGIN
insert into [TempDataBase].[dbo].TestQuestion (QuestionType, Question_Text, Questionaire_ID, Filter)
VALUES (@QuestionType, @QuestionText, @Questionaire_ID,@Filter)
select @newQuestion_ID = SCOPE_IDENTITY()
END
INSERT INTO [TempDataBase].[dbo].TestPossible(Q_ID, Expl, Rev, P_A_T, QType)
VALUES (@newQuestion_ID, @RequiresExplanation, @ReviewRequired, @Value, @QuestionType)
SET @LAST_Question = @QuestionText
但是當我嘗試和更新,只需要把最後一個值的XML
UPDATE [TempDataBase].[dbo].TestPossible
SET Expl = @RequiresExplanation,
Rev = @ReviewRequired,
P_A_T = @Value,
QType = @QuestionType
WHERE Q_ID = @ID
現在我有一個光標定義及其他語句來使插入和更新運行,所以沒有必要建議我添加這些語句,我沒有添加它們來保存頁面上的擁塞。如果需要,我可以顯示XML。最主要的是我有多個@Value,它只在第一個問題中插入所需的次數(兩個用於第一個問題,三個用於第二個)
有沒有人有建議來完成這個?
編輯:添加XML
<Questions>
<Question>
<ID>2422</ID>
<QuestionText>Did the Update Work correctly?</QuestionText>
<QuestionType>1</QuestionType>
<QuestionaireID>2</QuestionaireID>
<Filter>31</Filter>
<PossibleAnswers>
<PossibleAnswer>
<Value>yes it did</Value>
<RequiresExplanation>1</RequiresExplanation>
<ReviewRequire>t</ReviewRequire>
</PossibleAnswer>
<PossibleAnswer>
<Value>no it did not</Value>
<RequiresExplanation>1</RequiresExplanation>
<ReviewRequire>t</ReviewRequire>
</PossibleAnswer>
</PossibleAnswers>
</Question>
<Question>
<ID>2423</ID>
<QuestionText>How are you today?</QuestionText>
<QuestionType>1</QuestionType>
<QuestionaireID>2</QuestionaireID>
<Filter>127</Filter>
<PossibleAnswers>
<PossibleAnswer>
<Value>Great</Value>
<RequiresExplanation></RequiresExplanation>
<ReviewRequire></ReviewRequire>
</PossibleAnswer>
<PossibleAnswer>
<Value>Good</Value>
<RequiresExplanation>1</RequiresExplanation>
<ReviewRequire>t</ReviewRequire>
</PossibleAnswer>
<PossibleAnswer>
<Value>Bad</Value>
<RequiresExplanation>1</RequiresExplanation>
<ReviewRequire>t</ReviewRequire>
</PossibleAnswer>
</PossibleAnswers>
</Question>
</Questions>
,這裏是我應得的XML數據
DECLARE @XmlString as XML
select @XmlString = cast(x as XML)
from openrowset(bulk 'C:\xml_ID.xml',single_blob) as T(x)
--SET UP A CURSOR to walk through the uploaded XML table
DECLARE cur CURSOR LOCAL for
SELECT
Question_ID = XTBL .value('(../../ID)[1]', 'bigint'),
QuestionText = XTbl.value('(../../QuestionText)[1]', 'varchar(200)'),
QuestionType = XTbl.value('(../../QuestionType)[1]', 'bigint'),
Questionaire_ID = XTbl.value('(../../QuestionaireID)[1]', 'bigint'),
Filter = XTbl.value('(../../Filter)[1]', 'bigint'),
Value = XTbl.value('(Value)[1]', 'varchar(400)'),
RequiresExplanation = XTbl.value('(RequiresExplanation)[1]', 'int'),
ReviewRequired = XTbl.value('(ReviewRequire)[1]', 'char(1)')
FROM
@XmlString.nodes('/Questions/Question/PossibleAnswers/PossibleAnswer') AS XD(XTbl)
需要xml文件以及如何從xml代碼中提取值 – radar 2014-11-05 19:36:35
@RADAR是您需要的嗎? – 2014-11-05 19:42:27
看起來不錯,其中更新語句中使用的ID集在哪裏修改此ID? – radar 2014-11-05 19:52:24