在PL/SQL中使用脚本参数在脚本之间传递变量

在PL/SQL中使用脚本参数在脚本之间传递变量,sql,oracle,parameters,sqlplus,Sql,Oracle,Parameters,Sqlplus,我在ORACLE sql命令提示符下运行install.sql,并传递三个参数值ORACLE_HOME、ORACLE_SID和schema PWD ---- Start of install.sql --parameter 1: ${ORACLE_HOME} --parameter 2: ${ORACLE_SID} --parameter 3: ${PRDPASS} set define on prompt prompt =================================

我在ORACLE sql命令提示符下运行install.sql,并传递三个参数值ORACLE_HOME、ORACLE_SID和schema PWD

---- Start of install.sql

--parameter 1: ${ORACLE_HOME}
--parameter 2: ${ORACLE_SID}
--parameter 3: ${PRDPASS}


set define on

prompt
prompt ======================================
prompt ||  Database Creation Started       ||
prompt ======================================
prompt 


prompt create prd_adminus objects................

connect prd_adminus/&3;

prompt Variable 1 = &1
prompt Variable 2 = &2
prompt Variable 3 = &3



@createSQLObjects.sql &1 &2 &3

prompt
prompt  Loading Java Classes for prd_adminus
prompt  ================================
prompt
connect prd_adminus/&3;

@loadjavaclasses.sql &1 &2 &3


prompt
prompt  Completed Loading Java Classes for prd_adminus
prompt  =============================================
prompt

prompt
prompt  Applying patch
prompt  ..............


@patch1.sql &1 &2 &3  
@patch2.sql &1 &2 &3 
@patch3.sql &1 &2 &3  

prompt
prompt ======================================
prompt ||  Database Creation Completed   ||
prompt ======================================
prompt 

disconnect;
exit;

---- End of install.sql
@patch2.sql&1&2&3

运行
@patch3.sql
时,重置变量值,patch3.sql终止。这是由于在
patch2.sql
中指定了
Set Define Off
,以避免脚本中出现
&


是否有其他方法保留我的值&1、&2和&3

为什么标记sql server?最后是否在patch2.sql中运行
set define on
?或者,假设和是字符串的一部分,您可以将它们更改为
chr(38)
,例如:
从dual中选择“T”| | chr(38)| |“Cs”?只需在运行
patch3.sql之前添加
set define on
,为什么要标记sql server?最后是否在patch2.sql中运行
set define on
?或者,假设和是字符串的一部分,您可以将它们更改为
chr(38)
,例如:
从dual中选择“T”| | chr(38)| |“Cs”?只需在运行
patch3.sql之前添加
set define on