asp.netフォームに教育資格ブロックがあり、1セットの資格がテーブルの行として挿入されます。だから私はこれらのセットを挿入したい、表のショットに3行挿入するように、1回のショットで3セットの資格を想定してください。ストアド プロシージャを使用しているため、複数の挿入クエリを作成したくありません。xml でこの仕事ができると聞きましたが、よくわかりません。
あなたの助けに感謝します。
asp.netフォームに教育資格ブロックがあり、1セットの資格がテーブルの行として挿入されます。だから私はこれらのセットを挿入したい、表のショットに3行挿入するように、1回のショットで3セットの資格を想定してください。ストアド プロシージャを使用しているため、複数の挿入クエリを作成したくありません。xml でこの仕事ができると聞きましたが、よくわかりません。
あなたの助けに感謝します。
クライアントから XML を生成して SP に送信できます -
SP:
CREATE PROCEDURE dbo.sp_test
@XML XML
AS BEGIN
SET NOCOUNT ON
--INSERT INTO dbo.ScheduleDetail (ScheduleID, DateOut, WorkShiftCD, AbsenceCode)
SELECT
ScheduleID = t.p.value('@ScheduleID', 'INT')
, DateOut = t.p.value('@DateOut', 'DATETIME')
, WorkShiftCD = t.p.value('@WorkShiftCD', 'VARCHAR(50)')
, AbsenceCode = t.p.value('@AbsenceCode', 'VARCHAR(50)')
FROM @XML.nodes('root/sd') t(p)
RETURN 0
END
実行:
DECLARE @XML XML
SELECT @XML = '
<root>
<sd ScheduleID="11324" DateOut="2009-01-01T00:00:00" AbsenceCode="offdays" />
<sd ScheduleID="11324" DateOut="2009-01-02T00:00:00" WorkShiftCD="1/10" />
<sd ScheduleID="11324" DateOut="2009-01-03T00:00:00" WorkShiftCD="1/11,5" />
<sd ScheduleID="11324" DateOut="2009-01-04T00:00:00" WorkShiftCD="1/7" />
<sd ScheduleID="11324" DateOut="2009-01-05T00:00:00" AbsenceCode="business_trip" />
<sd ScheduleID="11324" DateOut="2009-01-06T00:00:00" AbsenceCode="offdays" />
</root>'
EXEC dbo.sp_test @XML = @XML