Openquery挂在同一行号

问题描述 投票:1回答:1

我试图通过链接服务器在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”语句中对于性能来说太糟糕了。

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

sql sql-server openquery
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.