首页 > 解决方案 > 使 SQL*Plus 脚本退出

问题描述

我希望使用 powershell 自动运行的目录中有一些 SQL*Plus 脚本。我可以读取目录,但是当我尝试执行脚本时,脚本终止但没有退出 powershell 并转到下一个。

如何让 powershell 退出 SQL*Plus 并自动转到下一个脚本,而无需我通过在每个脚本的末尾显式添加退出来修改脚本?

下面是最简单形式的图解 powershell 脚本

$Filename=Get-childitem "D:\test\TestSQL" -Filter *.sql | Select -ExpandProperty name
foreach ($f in $Filename)
{
  sqlplus -L -S <username>/<password>@<sid> @$f
}

该目录理论上可以包含数百个脚本,并且在每个脚本中添加退出命令是不可行的。我想在完成每个脚本后强制 SQL*Plus 退出并继续执行下一个脚本。

有可能这样做吗?

标签: oraclepowershellsqlplus

解决方案


我不熟悉 plsql,但我认为 sqlplus 是一个执行 plsql 脚本的 exe。如果 PowerShell 没有继续执行下一个脚本,那是因为 sqlplus 没有退出。一点谷歌搜索表明结束 pssql 脚本的正确方法是在最后一行放置一个正斜杠:

/

据我了解,这告诉 sqlplus 执行上面的所有内容,没有它 sqlplus 将不会终止。

你说:

在每个脚本中添加退出命令是不可行的

但据我所知,这正是你必须做的。

幸运的是,PowerShell 也可以提供帮助。只需导航到包含脚本的目录并执行以下命令:

dir *.sql | add-content -value "/"

推荐阅读