Oracle SQL скрипт спул & 1 - PullRequest
       3

Oracle SQL скрипт спул & 1

0 голосов
/ 24 марта 2011

Если у меня есть 3 SQL-скрипта и если я вывожу выходные данные в спул & 1 в первом SQL-скрипте, нужно ли мне выводить второй SQL-скрипт в спул & 2 .. Я пытаюсь получить все эти выходные данные в другом скрипте cshell ..кто-нибудь объяснит мне, как работает spool & 1

Ответы [ 2 ]

1 голос
/ 24 марта 2011

&1 - это позиционный параметр. Использование spool &1 означает, что вывод будет идти к имени файла, которое вы передадите в качестве первого аргумента в командной строке

Если ваш сценарий csh вызывает три сценария SQL и все они содержат спулы, каждый из них должен ссылаться на &1, второй не использует &2. (Пока имя файла является первым аргументом в каждом случае). И «счетчик» сбрасывается в 1 для каждого сеанса SQL * Plus. Так что если у вас есть SQL-скрипты с именами query1.sql, query2.sql и query3.sql, ваш csh-скрипт может выглядеть примерно так:

#!/bin/csh
sqlplus -s / @query1 output_file_1
sqlplus -s / @query2 output_file_2
sqlplus -s / @query3 output_file_3

Каждый из сценариев SQL будет содержать spool &1, и выходные данные будут идти в разные файлы. Затем вы можете обратиться к выходным файлам в другом месте того же сценария csh, который вам нужен.

Как Роберт упоминает в документации, которую он цитирует, если вы хотите, чтобы весь вывод шел в один и тот же файл, вам необходимо передать одно и то же имя файла всем трем командам sqlplus и выполнить вторую и третью команды спулинга. иметь аргумент APP[END].

1 голос
/ 24 марта 2011

Предполагая, что у вас версия 10g или выше, у вас есть следующие опции:

SQL> spool name_of_file
SQL> spool name_of_file off
SQL> spool name_of_file out
SQL> spool name_of_file create
SQL> spool name_of_file append
SQL> spool name_of_file replace

Не стоит недооценивать силу оракулов в электронной документации:

CRE[ATE]
Creates a new file with the name specified. 
REP[LACE]
Replaces the contents of an existing file. If the file does not exist, REPLACE creates the 
file. This is the default behavior.
APP[END]
Adds the contents of the buffer to the end of the file you specify.
OFF
Stops spooling.
OUT
Stops spooling and sends the file to your computer's standard (default) printer. This 
option is not available on some operating systems.
Enter SPOOL with no clauses to list the current spooling status
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...