0

我需要从 MS SQL 服务器通过 ODBC 向 Oracle 服务器提交一系列查询,并将结果作为表存储在 MS SQL 服务器上。

它必须是直通的,因为查询需要在 Oracle 服务器上定义的服务器端函数。由于 Oracle 上运行的数据库供应商的许可限制,我无法将表保存在 Oracle 服务器上,然后通过 ODBC 访问它。

这是返回正确结果的代码,但我不知道如何保存它们:

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

您需要使用 INSERT INTO 来捕获 EXECUTE 的结果。

因为您正在执行直通查询,分布式事务协调器将发挥作用,您可能需要确保未创建分布式事务(在您的情况下不太可能需要分布式事务)或分布式事务事务协调器服务正在运行:

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 回答