0

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 つのテーブルを結合し、各テーブルの適切な列を更新するにはどうすればよいですか?

テーブル図

4

0 に答える 0