xml からデータを抽出して 3 つのテーブルを更新しようとしています
ALTER PROCEDURE [dbo].[usp_UpdateOrderDetail]
@Request XML = '<Request/>'--,
--@Response XML = '<Response/>' OUTPUT
As
BEGIN
DECLARE @OrderID BIGINT
DECLARE @AddressID BIGINT
SET @OrderID = @Request.value('(Order/OrderID)[1]', 'BIGINT')
IF @OrderID > 0
BEGIN
-- this is where I am confused
UPDATE Orders O join Customers C on O.OrderID=C.OrderID SET
C.ContactName = T.C.value('ContactName[1]', 'varchar(50)'),
Phone = T.C.value('Phone[1]', 'varchar(50)'),
OrderDate = T.C.value('OrderDate[1]', 'varchar(50)')
FROM @Request.nodes('//Orders') as T(C)
WHERE OrderID = T.C.value('OrderID[1]', 'BIGINT')
END
ELSE
BEGIN
INSERT INTO Orders
(
ContactName
, Phone
, OrderDate
)
SELECT
T.C.value('ContactName[1]', 'varchar(50)')
, T.C.value('Phone[1]', 'varchar(50)')
, T.C.value('OrderDate[1]', 'varchar(50)')
FROM
@Request.nodes('//Order') AS T (C)
END
DECLARE @Counter INT
SET @Counter = 1
-- possibly more code here
END
最初のコメントの部分は、構文が正しくないというエラーをスローします...!
3 つのテーブルすべてのほぼすべての列からデータを受け取ります (便宜上、ここには含まれていません)。これら 3 つのテーブルを結合し、各テーブルの適切な列を更新するにはどうすればよいですか?