在OPENQUERY无法使用EXECUTE

时间:2019-05-30 20:57:46

标签: sql sql-server oracle tsql ssms

我目前正在使用SQL Server Management Studio 17连接到Oracle数据库实例,然后提取一些数据并将其插入到我拥有的SQL Server表中。

我尝试执行以下操作:

DROP TABLE IF EXISTS [jerry].[dbo].[purchases]
SELECT * INTO [jerry].[dbo].[purchases] FROM OPENQUERY(OLAP, '

    proprietary sql code

');

但是,SQL代码大约为9500个字符,因此OPENQUERY失败,MSDN articles支持

我引用了以下网站:

了解到我可以使用EXEC来实现自己的目标。 我试图实现以下目标:

EXEC master.dbo.sp_serveroption @server=N'OLAP', @optname=N'rpc out', @optvalue=N'true'
DECLARE @sqlcode VARCHAR(MAX)
SET @sqlcode = 'sql code'


DROP TABLE IF EXISTS [jerry].[dbo].[purchases]
EXEC @sqlcode AT OLAP

但是,我仍然遇到Invalid Syntax near OLAP错误。 我已经确认OLAP是我们DBA的正确名称,其他OPENQUERY函数也可以正常工作(使用更短的SQL语句)。

  • 我无法编辑SQL查询
  • 我无法编辑外部OLAP的数据库权限(我既不是DBA,也不是安全组中的人)

非常感谢您的协助。

1 个答案:

答案 0 :(得分:3)

不带括号的EXEC运行存储过程。

所以尝试:

truncate table [jerry].[dbo].[purchases]

insert into [jerry].[dbo].[purchases]
exec ( @sqlcode ) at olap

请参见execute