2015-04-15 4 views
0

Я запускаю следующий скрипт, чтобы вывести некоторые результаты в текстовую таблицу. Когда я запускаю скрипт, он возвращает скрипт в текстовый файл и не приводит к результатам запроса. Любая идея о том, почему?Oracle Spool возвращает скрипт запроса и никаких результатов

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