我试图通过链接服务器在SQL Server 17中运行openquery到Oracle连接源。当我运行下面发布的查询时,它每次都会停留在第7833行。
查询:
SELECT
sys_ohi,
"Region",
sub_acct_no_ohi,
serv_cde_ohi,
connect_dte_ohi,
charge_amt_ohi
FROM openquery (MyServer, '
(SELECT DISTINCT
sys_ohi,
CASE
WHEN prin_ohi = ''1000'' THEN ''Seattle East''
WHEN prin_ohi = ''1500'' THEN ''Seattle West''
WHEN prin_ohi = ''2000'' THEN ''Oregon''
WHEN prin_ohi = ''3000'' THEN ''Sacramento''
WHEN prin_ohi = ''3500'' THEN ''San Francisco''
END AS "Region",
sub_acct_no_ohi,
serv_cde_ohi,
connect_dte_ohi,
charge_amt_ohi
FROM mytable_ohi
WHERE serv_cde_ohi IN (''INSTALL'')
AND connect_dte_ohi > trunc(to_date(''06-01-2017'',''MM-DD-YYYY'')))')
我有36个不同的serv_cde_ohi IN (''INSTALL'')
但我为不同的场景创建了36个UNION ALL查询,因为他们试图将它们放入' IN'声明表现很糟糕。
我需要知道为什么这个查询会卡在同一个地方。
答案 0 :(得分:0)
您的UNION ALL声明可能依赖于隐式数据转换来开始执行,然后在游标提取期间发生数据条件,其中隐式转换以您正在观察的方式失败。
消除所有隐式依赖项。对于每个SELECT中的每个项目,显式建立数据类型(每个项目的类型相同,当然通常是这样)。