我需要从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
答案 0 :(得分:0)
您需要使用INSERT INTO来捕获EXECUTE的结果。
因为您正在执行直通查询,所以分布式事务处理协调器将发挥作用,您可能需要确保未创建分布式事务(在您的情况下不太可能需要分布式事务)或分布式事务处理协调器服务正在运行:
http://technet.microsoft.com/en-us/library/ms178532.aspx
http://www.sqlservercentral.com/Forums/Topic861249-392-1.aspx