将参数传递给oracle脚本

时间:2013-10-01 20:43:58

标签: sql oracle parameters

这是我的情景。

我有带有create,drop,insert等语句的Test1.sql,Test2.sql和Test3.sql文件。将来可能会增加文件数量。

我想在一个脚本中运行所有这些,所以我创建了一个主脚本Master.sql,其中包含以下内容

    @@Test1.sql
    @@Test2.sql
    @@Test3.sql

我在Windows上使用SQL plus命令提示符运行它作为@“脚本\ master.sql的路径”,如果我想通过SQL开发人员运行它,我只需打开master.sql文件并运行它。到目前为止一切都很好......

现在,我必须在具有不同用户和模式名称的各种环境中运行master.sql,但用户和模式名称在脚本中是硬编码的。我希望能够在主脚本执行时用参数替换所有出现的硬编码名称,并且只传递一次。从命令提示符和使用SQL开发人员。我该怎么做?请指教。

1 个答案:

答案 0 :(得分:1)

查看SQL*PLUS User Guide and Reference的文档。

从手册:

  

您可以绕过与替换相关的值的提示   通过将值传递给脚本中的参数的变量   START命令。你可以通过放置&符号(&)后跟a来实现   脚本中的数字代替替换变量。每一次   运行此脚本时,START会用第一个替换文件中的每个& 1   在START文件名之后的值(称为参数),然后替换每个& 2   使用第二个值,依此类推。例如,您可以包括   脚本中的以下命令名为MYFILE:

SELECT * FROM EMP_DETAILS_VIEW
WHERE JOB_ID='&1'
AND SALARY='&2';
  

在以下START命令中,SQL * Plus将替换PU_CLERK   脚本MYFILE中的& 1和3100 for& 2

 START MYFILE PU_CLERK 3100
  

当您使用START命令的参数时,每个都使用SQL * Plus DEFINE   脚本中的参数,带有适当参数的值。