这是我的情景。
我有带有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开发人员。我该怎么做?请指教。
答案 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 脚本中的参数,带有适当参数的值。