传递给SQL * Plus脚本的参数会覆盖调用它的脚本的参数

时间:2018-12-21 09:33:01

标签: oracle sqlplus

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>

我希望在调用file2.sql之后打印'col2',但是它会被传递给file2.sql的值覆盖。如何克服这个问题?

1 个答案:

答案 0 :(得分:0)

您可以将原始参数保存在新变量中:

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