Openquery挂在同一行号

时间:2017-12-19 18:34:12

标签: sql sql-server openquery

我试图通过链接服务器在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'声明表现很糟糕。

我需要知道为什么这个查询会卡在同一个地方。

1 个答案:

答案 0 :(得分:0)

您的UNION ALL声明可能依赖于隐式数据转换来开始执行,然后在游标提取期间发生数据条件,其中隐式转换以您正在观察的方式失败。

消除所有隐式依赖项。对于每个SELECT中的每个项目,显式建立数据类型(每个项目的类型相同,当然通常是这样)。