2015-04-15 17 views
0

我運行以下腳本將一些結果拖到文本表中。當我運行腳本時,它將腳本返回到文本文件並且沒有查詢結果。任何想法爲什麼?Oracle後臺打印返回查詢腳本並且沒有結果

set feedback off 
set heading off 
set echo off 
set define off 
set linesize 500 
spool \\1.1.1.1\w$\Customer_Service\Outgoing\Missing_PO_NN.txt 
select p.po 
from sv_order_check_nn p 
    where not exists (
      select 1 
      from ordusctes o 
      where o.usctes_po = p.po); 
/
SPOOL OFF 
+1

這不是你的問題的答案,但你真的不應該做'WHERE NOT EXISTS',它通常對於表現很糟糕。嘗試做一個'LEFT JOIN',而不是右表的連接鍵爲空。 –

+0

我將我的查詢更改爲左外部聯接。感謝您的建議。 – Brandon

回答

1

當我運行該腳本,它返回腳本的文本文件,並沒有查詢結果。任何想法爲什麼?

取決於您的查詢是否實際返回任何行。你是否首先執行查詢並檢查它是否實際返回任何行?

select p.po 
from sv_order_check_nn p 
    where not exists (
      select 1 
      from ordusctes o 
      where o.usctes_po = p.po); 
/

您是執行查詢兩次。您正在使用斜槓/作爲終止符最後,這是要去執行任何在緩衝區

看到這個answer類似的問題和修復。

就你而言,你的查詢將被執行兩次。

+0

如果我刪除假脫機腳本,它將返回結果行。 – Brandon

+0

如何嘗試我的建議,最終刪除斜線? –

+0

我刪除了正斜槓並將我的腳本更改爲左外連接。不幸的是,沒有改變。仍然收到我的假脫機文本文件中的查詢腳本結果。 – Brandon