0

2 つのサーバー (ホストは SQL Server 2008、宛先は ORACLE) をリンクして、Oracle サーバーのテーブルに SQL サーバーの複数のテーブルに保持されているデータが入力されるようにしようとしています。

私はINSERT OPENQUERYを設定しましたが、これは完全に正常に機能します。また、これらのレコードを更新する別のクエリをセットアップしたいと考えています。

したがって、私の挿入クエリは、過去 24 時間に作成されたレコードを選択して挿入しますが、問題ありません。しかし、関連する変更を行うために 24 時間ごとに実行される UPDATE OPENQUERY スクリプトの作成に苦労しています。

ここに私の挿入があります

INSERT OPENQUERY(ukdev662, 'SELECT DOCKET_NUMBER, 
                        APP_NUMBER,
                        ATT,
                        LIT_H, 
                        REVIEW,
                        COUNTRY,
                        NOTICE, 
                        COUNTRY_CODE,
                        FORMALITY_NAME                  
                        FROM GWDMDV29.LOOKUPS__IPMANAGER')
        SELECT PMasters.DocketNumber + ISNULL(Codes_RelationType.Code, '') + ISNULL(PMasters.FilingNumber, '') + 'PTE'
               ,ISNULL(PMasters.AppNumber, '[null]')
               ,ISNULL(PartyDetails_Att.Party, 'Att not assigned')
               ,0
               ,CONVERT(DATETIME, '20130128')
               ,uktst1633.dbo.Countries.Description
               ,'Preserve'
               ,uktst1633.dbo.Countries.WIPO
               ,ISNULL(PartyDetails_Associate.Party, '[null]')
            FROM uktst1633.dbo.Countries
            RIGHT OUTER JOIN uktst1633.dbo.PatentMasters PMasters
                ON ( PMasters.Country = uktst1633.dbo.Countries.CountryID )
            INNER JOIN uktst1633.dbo.Codes Codes_CType
                ON ( PMasters.CType = Codes_CType.CodeID
                     AND Codes_CType.CodeTypeID = 'CSP'
                   )
            INNER JOIN uktst1633.dbo.Codes Codes_RelationType
                ON ( Codes_RelationType.CodeID = PMasters.RelationType
                     AND Codes_RelationType.CodeTypeID = 'RLP'
                   )
            LEFT OUTER JOIN uktst1633.dbo.Parties Parties_Att
                ON ( Parties_Att.PartyID = PMasters.Att
                     AND ( Parties_Att.PartyTypeID = 'ATP'
                           OR Parties_Att.PartyTypeID IS NULL
                         )
                   )
            LEFT OUTER JOIN uktst1633.dbo.PartyDetails PartyDetails_Att
                ON ( PartyDetails_Att.PartyDetailID = Parties_Att.PartyDetailID )
            LEFT OUTER JOIN uktst1633.dbo.Parties Parties_Associate
                ON ( Parties_Associate.PartyID = PMasters.Associate
                     AND ( Parties_Associate.PartyTypeID = 'AGP'
                           OR Parties_Associate.PartyTypeID IS NULL
                         )
                   )
            LEFT OUTER JOIN uktst1633.dbo.PartyDetails PartyDetails_Associate
                ON ( PartyDetails_Associate.PartyDetailID = Parties_Associate.PartyDetailID )
            WHERE ( ( Codes_RelationType.Description = 'CONTINUATION'
                      OR Codes_RelationType.Description = 'DIVISION'
                    )
                    AND Codes_CType.Description = 'Regular'
                    AND PMasters.CreateDate >= DATEADD(day, -1, GETDATE())
                  )

助けてくれてありがとう。私は周りを検索しましたが、OPENQUERY で多くを見つけることができません。それはすべてかなり基本的なもののようです。この構文の例に従ってみましたが、どこにも行きませんでした...

UPDATE
    Table
SET
    Table.col1 = other_table.col1,
    Table.col2 = other_table.col2
FROM
    Table
INNER JOIN
    other_table
ON
    Table.id = other_table.id 
4

0 に答える 0