【问题标题】:Exit after script in SQLPlus?在 SQLPlus 中的脚本后退出?
【发布时间】:2016-12-16 02:22:37
【问题描述】:

我一直在到处寻找,帖子建议通过管道传递echo exit | sqlplus @script.sql,但我的脚本包含接受输入的 PL/SQL 语句,因此一旦输出PROMPT 消息,exit 就会启动in 并且脚本退出。

这是 linux 调用

alias sql 'sqlplus -s user/pass'

sql @test.sql

脚本执行良好并在数据库中执行INSERT,但它只是等待我在执行后键入退出。 有什么想法吗?

【问题讨论】:

  • 不能修改脚本吗?

标签: linux oracle sqlplus


【解决方案1】:

显而易见的事情是修改你的脚本以在末尾添加exit。如果您不能这样做,您可以创建一个临时文件来执行此操作,例如:

(cat test.sql && echo exit) > /tmp/test_$$.sql
sql @/tmp/test_$$.sql
rm -f /tmp/test_$$.sql

文件名中的$$ 替换为当前进程的ID (PID),因此如果脚本同时运行两次,每个将获得不同的文件名;然后它在最后被删除。 (您可以先进行保护性删除,或者检查它不存在,以防之前的删除以某种方式失败)。

【讨论】:

  • 脚本末尾确实有exit,但pl/sql 无法识别它
  • 退出必须在脚本的末尾,在任何 PL/SQL(或纯 SQL)语句之后。如果您的脚本以 PL/SQL 块结尾并且其终止 / 则退出 之后 在新行上。
猜你喜欢
  • 2014-02-04
  • 2012-06-27
  • 2010-11-27
  • 1970-01-01
  • 2016-07-30
  • 2016-05-27
  • 2019-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多