如何将传递查询的结果保存到本地表?

时间:2012-08-17 16:55:30

标签: tsql

我需要从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

1 个答案:

答案 0 :(得分: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