0

我创建了一个查询,用于在标签中显示数据。然后,此特定查询将存储到我们使用的程序中。该查询运行良好,直到今天早上它返回错误 ORA-30928:“通过过滤阶段连接临时表空间用完”。我用谷歌搜索并发现我可以执行以下任何操作:

  1. 包括一个 NO FILTERING 提示 - 但没有正常工作
  2. 增加临时表空间 - 不适用于我,因为它在我无权访问的生产服务器中运行。

还有其他方法可以解决这个问题吗?顺便说一句,下面是我使用的查询。

SELECT * FROM(
SELECT
gn.wipdatavalue 
, gn.containername 
, gn.l 
, gn.q 
, gn.d 
, gn.l2 
, gn.q2 
, gn.d2 
, gn.l3 
, gn.q3 
, gn.d3 
, gn.old 
, gn.qtyperbox 
, gn.productname 
, gn.slot 
, gn.dt 
, gn.ws_green 
, gn.ws_pnr 
, gn.ws_pcn 
, intn.mkt_number dsn 
, gn.low_number 
, gn.high_number 
, gn.msl
, gn.baketime
, gn.exptime
, NVL(gn.q, 0) + NVL(gn.q2, 0) + NVL(gn.q3, 0) AS qtybox
, row_number () over (partition by slot order by low_number) as n
FROM
(
SELECT
tr.* 
, TO_NUMBER(SUBSTR(wipdatavalue, 1, INSTR (wipdatavalue || '-', '-') - 1)) AS low_number
, TO_NUMBER(SUBSTR(wipdatavalue, 1 + INSTR ( wipdatavalue, '-'))) AS high_number
, pm.msllevel MSL
, pm.baketime BAKETIME
, pm.expstime EXPTIME
FROM trprinting tr
JOIN CONTAINER c ON tr.containername = c.containername
JOIN a_lotattributes ala ON c.containerid = ala.containerid
JOIN product p ON c.productid = p.productid
LEFT JOIN otherdb.pkg_main pm ON trim(p.brandname) = trim(pm.pcode)
WHERE (c.containername = :lot OR tr.SLOT= :lot)
)gn
LEFT JOIN otherdb.intnr intn ON TRIM(gn.productname) = TRIM(intn.part_number)
connect by level <= HIGH_NUMBER + 1 - LOW_NUMBER and LOW_NUMBER = prior LOW_NUMBER and prior SYS_GUID() is not null
ORDER BY low_number,n
)
WHERE n LIKE :n AND wipdatavalue LIKE :wip AND ROWNUM <= 300 AND wipdatavalue NOT LIKE 0

我也在使用 Oracle 11g。

感谢大家的帮助。

4

0 回答 0