Аргументы, переданные в скрипт SQL * Plus, переопределяют аргументы скрипта, который его вызвал - PullRequest
0 голосов
/ 21 декабря 2018

file2.sql

set serveroutput on
exec dbms_output.put_line('invoke file2.sql');

file1.sql

exec dbms_output.put_line('&1');
@file2.sql 'col2' 'col1'
exec dbms_output.put_line('&1');

Я выполняю @ file1.sql 'col1'.Пожалуйста, найдите выходные данные ниже.

@f1.sql col1

col1

PL / SQL-процедура успешно завершена.

вызовите file2.sql

Процедура PL / SQL успешно завершена.

col2

Процедура PL / SQL успешно завершена.

SQL>

Я ожидаю печати 'col2 'после вызова file2.sql, но он переопределяется со значением, переданным в file2.sql.Как это побороть?

1 Ответ

0 голосов
/ 21 декабря 2018

Вы можете сохранить исходный аргумент в новой переменной:

file1.sql:

prompt Argument 1 = &1
define somevar = &1

@file2.sql col2 col1

prompt Original argument 1 = &somevar

Вывод:

SQL> @file1.sql col1
Argument 1 = col1
This is file2.sql
Original argument 1 = col1
...