1

这是我的场景。

我有带有创建、删除、插入等语句的 Test1.sql、Test2.sql 和 Test3.sql 文件。未来文件的数量可能会增加。

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

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

我在 Windows 上使用 SQL plus 命令提示符将它作为@"Path to the script\master.sql" 运行,如果我想通过 SQL 开发人员运行它,我只需打开 master.sql 文件并运行它。到目前为止一切顺利……</p>

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

4

1 回答 1

1

查看SQL*PLUS 用户指南和参考的文档。

从手册:

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

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

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

 START MYFILE PU_CLERK 3100

当您在 START 命令中使用参数时,SQL*Plus 使用适当参数的值定义脚本中的每个参数。

于 2013-10-01T22:49:04.157 回答