ストアード・プロシージャー:ストアドプロシージャの値は挿入しないXMLノード
ALTER proc [dbo].[Equip_SaveTeamTaskAssigineeDetails] (
@saveDataXML xml)
as
begin
Declare @claimid int,
@createdate datetime,
@duedate datetime,
@startdate datetime,
@assignmentid int,
@assignedto varchar(50),
@piority varchar(50),
@comment varchar(4000)
select @claimid = node.value('claimid[1]','int'),
@createdate = node.value('createdate[1]','datetime'),
@duedate = node.value('duedate[1]','datetime'),
@startdate = node.value('startdate[1]','datetime'),
@assignmentid = node.value('assignmentid[1]','int'),
@assignedto = node.value('assignedto[1]','varchar(50)'),
@piority= node.value('piority[1]','varchar(50)'),
@comment = node.value('comment[1]','varchar(4000)')
from @saveDataXML.nodes('/TeamTaskDetails/Task') nodes(node)
IF (@claimid = 0)
BEGIN
INSERT INTO [dbo].[TeamTaskAssiginment]
([claimid],
[createdate],
[duedate],
[startdate],
[assignedid],
[assiginedto],
[priority],
[comment])
VALUES
(@claimid,
@createdate,
@duedate,
@startdate ,
@assignmentid ,
@assignedto ,
@piority ,
@comment
)
--SET @claimid = SCOPE_IDENTITY()
END
ELSE
BEGIN
Update [dbo].[TeamTaskAssiginment] set
[email protected] ,
[email protected],
[email protected],
[email protected],
[email protected],
[email protected],
[email protected],
[email protected]
END
Execute Stored Procedure
Exec Equip_SaveTeamTaskAssigineeDetails @saveDataXML =
<TeamTaskDetails>
<Task claimid="1" createdate="2000-12-16" duedate="2000-12-16" startdate="2000-12-16" assignmentid="1" assignedto="test" piority="HIGH" comment="test" />
</TeamTaskDetails>
私はその示す0行が
問題を解決するために助けてください
を挿入していない値を影響を受けるストアドプロシージャ実行された場合。
変数を間違って割り当て、テキストではなく属性を抽出するには、 '@'を使用します。 'SELECT @claimid = node.value( '@ claimid [1]'、 'int')' - これは変数がnullであることを意味します。したがって、 'IF'ではupdateステートメントに行きます。テーブルに行がないと仮定しているので、 '0 rows affected'が得られます。あなたは 'ELSE'条件であなたの質問が正しいのですか? where句がないので、テーブルのすべてのレコードを更新するように見えますか? – GarethD
xmlクエリが間違っていると、nullが返され、挿入がヒットしません。あなたの更新クエリにはwhere節がありません。これは、私が推測しているのは、意図された動作ではないかもしれないということです。 – Tanner