0

MS SQL サーバーから ODBC 経由で一連のクエリを Oracle サーバーに送信し、結果を MS SQL サーバーのテーブルとして保存する必要があります。

クエリには Oracle サーバーで定義されたサーバー側関数が必要なため、パススルーにする必要があります。Oracle サーバーにテーブルを保存できず、ODBC 経由でアクセスできません。これは、Oracle で実行されているデータベースのベンダーからのライセンス制限のためです。

正しい結果を返すコードは次のとおりですが、それらを保存する方法がわかりません。

DECLARE @BibID AS bigint

DECLARE BibList CURSOR FOR 
    SELECT BIB_ID FROM tblActiveSerialsThatHave740s
OPEN BibList 

FETCH NEXT FROM BibList INTO @BibID
WHILE @@FETCH_STATUS=0
BEGIN
    EXECUTE 
    ('SELECT 
        AMDB.BIB_DATA.BIB_ID As BIB_ID, 
        AMDB.GetAllBibTag(AMDB.BIB_DATA.BIB_ID, ''740'', ''2'') As F740_All 
    FROM 
        AMDB.BIB_DATA 
    WHERE
        AMDB.BIB_DATA.BIB_ID = ' + @BibID + '
    GROUP BY BIB_ID '
    )
    AT REPORT
    FETCH NEXT FROM BibList INTO @BibID
END

DEALLOCATE BibList
4

1 に答える 1

0

EXECUTE の結果を取得するには、INSERT INTO を使用する必要があります。

パススルー クエリを実行しているため、分散トランザクション コーディネーターが機能し、分散トランザクションが作成されていないことを確認する必要がある場合があります (この場合、分散トランザクションが必要になる可能性はほとんどありません)。トランザクション コーディネーター サービスが実行されています。

http://blogs.msdn.com/b/sqlprogrammability/archive/2008/08/22/how-to-create-an-autonomous-transaction-in-sql-server-2008.aspx

http://technet.microsoft.com/en-us/library/ms178532.aspx

http://www.sqlservercentral.com/Forums/Topic861249-392-1.aspx

于 2012-08-21T00:13:41.900 に答える