【发布时间】:2012-02-10 17:23:58
【问题描述】:
大家! 我想知道这条线的作用:
sqlplus -s /nolog <<EOF
有什么想法吗? 感谢您的帮助!
【问题讨论】:
-
我认为
EOF是heredoc 而不是文件? -
是的。此行在 Unix shell 中执行。
大家! 我想知道这条线的作用:
sqlplus -s /nolog <<EOF
有什么想法吗? 感谢您的帮助!
【问题讨论】:
EOF 是heredoc 而不是文件?
根据您在 cmets 中提供的信息:
sqlplus -s /nolog <<EOF
在启用静默模式的情况下启动sqlplus 的实例(我相信,它不会将任何输出发送到控制台屏幕),并且没有显式提供登录名(因此/nolog),它从 EOF heredoc 中包含的字符串(可能包含登录凭据)中获取输入。
Here 是 Oracle 在 sqlplus 上的文档的快速概览。
【讨论】:
-s 静默选项:它抑制 SQL*Plus 横幅的输出、命令提示符和命令的回显。
/nolog 启动 SQL*Plus 但不登录(连接)用户/会话。
所以似乎启动 SQL*PLUS 而不登录用户/会话(nolog 选项)并且不显示信息(静默选项)。
【讨论】:
完整的摘录应该是:
sqlplus -s /nolog << ABCDE
CONNECT user/pwd@database
-- DO SQL AND PLSQL STUFF
EXIT
ABCDE
这类似于运行sqlplus -s user/pwd@database @script.sql,其中script.sql 包含sql、plsql 内容和exit 命令。 << 语法是 heredoc 的 shell 运算符,这意味着如果找到 ${variables},则后面的所有行都是变量扩展的,并且第一行以 ABCDE 开头(在该行的最开头,没有空格,没有tabs) 结束输入。
【讨论】: