oracle - 使 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 退出并继续执行下一个脚本。
有可能这样做吗?
解决方案
我不熟悉 plsql,但我认为 sqlplus 是一个执行 plsql 脚本的 exe。如果 PowerShell 没有继续执行下一个脚本,那是因为 sqlplus 没有退出。一点谷歌搜索表明结束 pssql 脚本的正确方法是在最后一行放置一个正斜杠:
/
据我了解,这告诉 sqlplus 执行上面的所有内容,没有它 sqlplus 将不会终止。
你说:
在每个脚本中添加退出命令是不可行的
但据我所知,这正是你必须做的。
幸运的是,PowerShell 也可以提供帮助。只需导航到包含脚本的目录并执行以下命令:
dir *.sql | add-content -value "/"
推荐阅读
- filter - 过滤不带双引号的ansible输出参数
- python - 如果 python 日志处理程序引发异常会发生什么?
- forms - 如何直接从图表生成谷歌表单(或类似的东西)?
- django - 如何用pythonanywhere配置django项目的sqlite
- node.js - Node.js 包发布到 github,^ 类型依赖没有解决
- reactjs - 切换反应组件不会呈现 css
- python - DeepDiff 使用正则表达式忽略
- android - 如何在 Android Studio 中使用透明分隔符拆分 SeekBar
- spring-boot - 错误:发生了非法反射访问操作 guice/java/spring-boot
- python - 计算一列在恢复为 0 之前为正的时间量