&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]
.