sqlplus没有正确结束脚本

时间:2018-05-15 15:06:45

标签: oracle sqlplus

我有一个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语句。

1 个答案:

答案 0 :(得分:2)

您可以使用shell重定向而不是code

#include <iostream>
using std::cout;
using std::cin;
using std::ofstream;
using std::endl;

void HelloWorld() {
    ofstream outfile ("html1.html");

    outfile << "<html> " << endl;
    outfile << "   <head> <title> Template Hello World </title> </head>" << endl;
    outfile << "   <body> <h1> Hello World! </h1> </body> " << endl;
    outfile << "</html> " << endl;
    outfile << "// Template HTML 2018 " << endl;
    cout << "Created Succesfuly! Directory: Program's folder " << endl;


    outfile.close(); 
}

这也可以防止它卡住&#39;如果脚本没有以@命令结束。

但是,在任何一种情况下,它都不会向shell返回错误代码。就SQL * Plus而言,您将不完整的语句放入其缓冲区但从未尝试执行它(因为没有斜杠);而且由于它没有运行,它没有错误。因此,设置sqlplus user/pass@host < my_not_properly_ended_file.pks 或其他任何不会产生任何影响。