linux - SQLPlus 中的脚本后退出?

标签 linux oracle sqlplus

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

这是 Linux 调用

alias sql 'sqlplus -s user/pass'

sql @test.sql

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

最佳答案

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

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

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

关于linux - SQLPlus 中的脚本后退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38860892/

相关文章:

linux - 文件名多扩展名顺序

php - SQL:如何插入自定义增量值

sql - 从多个相关表中删除行

sql - 加密 SQL 中的字符串(可能是 ORACLE PL SQL)。凯撒密码

variables - 为什么用变量名替换其值导致 “' xxx'应该被声明为“错误”?

Linux,获得 root 访问权限的唯一方法是执行 setuid-root 文件?

linux - 绑定(bind)到给定 URL 的 IP 地址列表

powershell - 执行powershell语句后检测错误

oracle - 安装 Oracle 11g 后,在 Ubuntu 14.04LTs 中找不到 lsnrctl

C 无限循环中的客户端/服务器失败