use*_*746 5 powershell sqlplus
我正在使用 powershell 运行sqlplus
,我希望 PowerShell 在脚本运行后检测是否有错误并执行一些操作,而不是查看结果文件。
& 'sqlplus' 'system/myOraclePassword' '@Test' | out-file 'result.txt';
Run Code Online (Sandbox Code Playgroud)
通常在DOS中,命令遇到错误时会出现%errorlevel%,不知道PowerShell中是否有类似的东西?
当然,我可以自己阅读日志文件,但有时,事情太常规了,我可能会忘记。
我的Test.sql:
select level from dual
connect by level<5;
select 10/0 from dual;
quit;
Run Code Online (Sandbox Code Playgroud)
显然有一个除以零误差。result.txt 捕获了它,但我希望 powershell 也检测到它
SQL*Plus:2017 年 4 月 27 日星期四 16:24:30 发布 12.1.0.2.0 生产版 版权所有 (c) 1982, 2014,甲骨文。版权所有。 上次成功登录时间:2017年4月27日星期四16:17:34 -04:00 连接到: Oracle Database 12c 企业版 12.1.0.2.0 版 - 64 位生产 使用分区、OLAP、高级分析和实际应用程序测试选项 等级 ---------- 1 2 3 4 从双中选择 10/0 * 第 1 行的错误: ORA-01476: 除数等于零
powershell语句像DOS一样执行后会返回errorlevel吗?
我试过了:
& 'sqlplus' 'system/myOraclePassword' '@Test' | out-file 'result.txt';
if (errorlevel 1)
{ write-host error;
}
else
{ write-host ok;
}
Run Code Online (Sandbox Code Playgroud)
但这导致了语法错误?
errorlevel :术语“errorlevel”不能识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
在powershell中检查错误的正确方法是什么?
更新
我用过这个:
if ($LASTEXITCODE -ne 0 )
{
write-host error;
}
else
{
write-host ok;
}
Run Code Online (Sandbox Code Playgroud)
由于您正在调用可执行文件,因此您可能需要检查$LASTEXITCODE
变量或sqlplus 的返回值。在 PowerShell 中,每个变量都有一个$
前缀。
归档时间: |
|
查看次数: |
1897 次 |
最近记录: |