如何使用SQLPLUS在命令行上将参数传递给PL/SQL脚本?

dja*_*fan 28 oracle sqlplus

如何使用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
Run Code Online (Sandbox Code Playgroud)

我试图搜索答案,但无法在SQLPLUS的任何地方找到"参数示例".我怀疑这是使用SQL*Plus"START"命令的类似方法吗?

mus*_*cio 44

首先,您需要调用您的脚本,如下所示:

sqlplus.exe MYUSER/mypassword@HOST030 @refreshDataOnOracle.sql foo bar  
Run Code Online (Sandbox Code Playgroud)

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

update mytable set mycol = '&2' where myid = '&1';
Run Code Online (Sandbox Code Playgroud)

这将转化为

update mytable set mycol = 'bar' where myid = 'foo';
Run Code Online (Sandbox Code Playgroud)

  • @ChadD参见`sqlplus` [`spool`](http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve043.htm#i2683777)-command. (2认同)

小智 5

如果你想记录 sqlplus 的运行情况,可以使用以下语法:

sqlplus.exe MYUSER/mypassword@HOST030 @refreshDataOnOracle.sql foo bar  >> log.log
Run Code Online (Sandbox Code Playgroud)