【问题标题】:How do I pass arguments to a PL/SQL script on command line with SQLPLUS?如何使用 SQLPLUS 在命令行上将参数传递给 PL/SQL 脚本?
【发布时间】:2013-09-08 09:02:42
【问题描述】:

如何使用 SQLPLUS 在命令行上将参数传递给 PL/SQL 脚本?我可以像这样调用我的 PL/SQL 脚本,但是脚本需要参数才能成功。如何运行 sqlplus.exe 以便将参数传递给脚本?

@ECHO off
// where HOST030 is a tnsnames alias to a machine, port, and instance    
sqlplus.exe MYUSER/mypassword@HOST030 < refreshDataOnOracle.sql    
pause

我试图搜索答案,但在任何地方都找不到 SQLPLUS 的“参数示例”。我怀疑这将是使用 SQL*Plus“START”命令的类似方法?

【问题讨论】:

    标签: oracle sqlplus


    【解决方案1】:

    首先,您需要像这样调用您的脚本:

    sqlplus.exe MYUSER/mypassword@HOST030 @refreshDataOnOracle.sql foo bar  
    

    您将使用“@”符号来指示要执行的文件名,而不是操作系统重定向。您还将在命令行上提供脚本参数。在脚本中,您将使用&amp;1&amp;2 等引用参数。

    update mytable set mycol = '&2' where myid = '&1';
    

    这将转化为

    update mytable set mycol = 'bar' where myid = 'foo';
    

    【讨论】:

    • 谢谢。就是这样。听起来“@”字符是“START”的别名。
    • @ChadD 见sqlplus spool-command。
    • 不确定,但您不能通过设置set define 用另一个分隔符“替换”&amp; 吗?
    【解决方案2】:

    如果你想记录sqlplus的运行,你可以使用这个语法:

    sqlplus.exe MYUSER/mypassword@HOST030 @refreshDataOnOracle.sql foo bar  >> log.log
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-11
      • 2017-04-20
      • 1970-01-01
      • 2014-03-08
      • 2013-10-22
      • 2016-12-19
      • 1970-01-01
      • 2017-03-22
      相关资源
      最近更新 更多