从批处理 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 命令挂起的主要内容,如果未能解决你的问题,请参考以下文章