Теория для лабораторной работы №3 - "Запросы и основы использования SQL*PLUS", страница 16

Это делается помещением амперсанда с последующим числом в командном файле вместо переменной подстановки. Каждый раз, когда запускается командный файл, START заменяет каждый &1 в файле первым значением (называемом аргументом)после START filename, затем заменяет каждый &2 вторым значением и т.д..

 

Например, можно включить следующие команды в командный файл, называемый MYFILE:

 

SELECT * FROM EMP

WHERE JOB='&1'

AND SAL=&2

 

В следующей команде START SQL*Plus подставит CLERK вместо &1 и 7900 вместо &2 в командном файле MYFILE:

 

SQL> START MYFILE CLERK 7900

 

Когда используются аргументы с командой START, SQL*Plus определяет каждый параметр в командном файле значением соответствующего аргумента.

 

Пример. Передача параметров через START

Для создания нового командного файла, основанного на SALES, который принимает параметр определяющий работу, которая будет показана, нужно ввести

 

SQL> GET SALES

  1  COLUMN ENAME HEADING SALESMAN

  2  COLUMN SAL HEADING SALARY FORMAT $99,999

  3  COLUMN COMM HEADING COMMISSION FORMAT $99,990

  4  SELECT EMPNO, ENAME, SAL, COMM

  5  FROM EMP

  6* WHERE JOB = 'SALESMAN'

SQL> CHANGE /SALESMAN/&1

  6* WHERE  JOB = '&1'

SQL> 1

  1* COLUMN ENAME HEADING SALESMAN

SQL> CHANGE /SALESMAN/&1

  1* COLUMN ENAME HEADING &1

SQL> SAVE ONEJOB

Created file ONEJOB

 

Теперь нужно выполнить командный файл с параметром CLERK:

 

SQL> START ONEJOB CLERK

 

SQL*Plus показывает строку команды SQL, которая содержит параметр, до и после замены параметра его значением и затем выводит:

 

Old     3: WHERE JOB = '&1'

new    3: WHERE JOB = 'CLERK'

    EMPNO     CLERK          SALARY COMMISSION