sqlplus 没有正确结束脚本

sqlplus not properly ended script

我有一个 plsql 脚本,它没有正确终止:

create or replace package mypackage 
  ... (no semicolon/forward slash at the end)

脚本在 windows powershell 上使用 sqlplus (12.1) 执行:

sqlplus user/pass@host @my_not_properly_ended_file.pks

我希望 sqlplus 以退出代码 1 和一条错误消息终止,但它会提示输入。

在这种情况下我如何获得错误消息和退出代码?

编辑:解决方案还应该适用于不以分号结尾的 dml 语句。

您可以使用 shell 重定向代替 @:

sqlplus user/pass@host < my_not_properly_ended_file.pks

如果脚本没有以 exit 命令结束,这也将阻止它获得 'stuck'。

但是,在任何一种情况下,它都不会 return 向 shell 发送错误代码。就 SQL*Plus 而言,您将不完整的语句放入其缓冲区但从未尝试执行它(因为没有斜线);因为它没有 运行,所以它没有错误。所以设置 whenever sqlerror 或其他设置也不会产生任何影响。