从批处理 cmd 窗口执行 SQL Plus SQL 命令挂起

Posted

技术标签:

【中文标题】从批处理 cmd 窗口执行 SQL Plus SQL 命令挂起【英文标题】:Execute SQL Plus SQL command from batch-cmd window hangs 【发布时间】:2014-04-30 01:17:58 【问题描述】:

我正在尝试在文件中执行 PL-SQL statemtn 并将结果记录到日志文件中。它可以工作,但是 DOS 窗口挂起,我必须手动关闭它。

我是否错误地结束了 SqlPlus 会话?

rem SET TERMOUT OFF; 
SET SqlPlusExe=C:\Oracle\product\11203_32bit\CLIENT_1\bin\sqlplus.exe
SET MyUser=MyID
SET MyPassword=MyPwd
SET Host=RXODSDEV.CIGNA.COM
SET SqlFile=C:\Users\MyLanId\Desktop\SQLPlus\test.sql
SET LogFile=C:\Users\MyLanId\Desktop\SQLPlus\test.log

%SqlPlusExe% %MyUser%/%MyPassword%@%Host% @%SqlFile% >> %LogFile% 
quit;
/

【问题讨论】:

嗯。看起来如果我将“退出”添加到 sql 文件的最后一行就可以了。 您不能将程序的输入放入这样的批处理文件中。你可以试试echo quit; | %SqlPlusExe%... 【参考方案1】:

对于 Windows 脚本,我建议您设置环境变量“LOCAL”(Linux 上的“TWO_TASK”)。该变量将指定您的连接字符串。

set LOCAL=RXODSDEV.CIGNA.COM

REM Create the file to run
@(
   echo connect %MyUser%/%MyPassword% 
   echo @%SqlFile% 
   echo exit^;
) > %TEMP%\run.sql
sqlplus /nolog @%TEMP%\run.sql >> out.log 

但是现在谁在编写 DOS 脚本? Powershell 更有趣!

【讨论】:

这些天没有人在做“DOS”脚本。不再有 DOS。【参考方案2】:

也许你觉得我的启动器脚本有用,看看http://www.unix.com/windows-and-dos-issues-and-discussions/256021-windowss-batch-launcher-oracle-sql-linux-sh-scripts-available-here.html

【讨论】:

以上是关于从批处理 cmd 窗口执行 SQL Plus SQL 命令挂起的主要内容,如果未能解决你的问题,请参考以下文章

cmd 执行sql脚本,该怎么处理

SQL*PLUS的相关命令

SQL*PLUS中批量执行SQL语句

bat命令怎么隐藏执行后的所有窗口。不是隐藏cmd的窗口。

在SQL*PLUS中如何创建oracle表

SQL Plus的使用