我的查询长度超过8000我尝试按照以下方式执行,但事实并非如此。我使用link求助。
Declare @query1 As varchar(8000)
Declare @query2 As varchar(8000)
SELECT TOP 1000 *
FROM OPENQUERY(OPTIMA,@query1+@query2)
错误:
Msg 102, Level 15, State 1, Line 74
Incorrect syntax near '@query1'.
我不允许在远程服务器中创建视图或存储过程。
答案 0 :(得分:0)
为您的查询创建Oracle DB的新视图,以便减少查询长度。
答案 1 :(得分:0)
OPENQUERY()
在你的@query上有一个8KB的内置限制,你也不允许为输入使用变量(试图规避8KB限制)。
我仍然建议您在目标服务器上创建存储过程并以OPENQUERY()
方式调用它。
答案 2 :(得分:0)
几天前我遇到了同样的问题,基本上我使用'UNION ALL'来结合openquery中的多个查询。
我对此的解决方案是在本地服务器而不是远程服务器上进行联合,它没有增加被拉线的行数,因为我总是使用union all,它只是强迫我使用多个openquery陈述而不是单一陈述。
它完成了这项工作(因为我没有被授权在远程服务器上做任何事情)。 如果可以, hkf 和Jokke Heikkilä都有正确答案,只需在远程服务器上执行sp或视图。