为了嵌入Unix shell脚本,我想执行一组SQL命令,然后直接退出sqlcl。
为此,我成功地使用了pipe-from-stdin方法:
echo "SELECT COLA FROM MYTABLE;" | sql -L <connectionstr>
它将查询结果返回到标准输出。好极了!
现在我想用一些sqlcl
的指令来“修饰”查询。例如,我想更改输出格式:
echo "SET SQLFORMAT CSV;\n SELECT COLA FROM MYTABLE;" | sql -L <connectionstr>
像个美人一样工作!有时我想添加回显SQL命令:
echo "SET ECHO ON;\n SELECT COLA FROM MYTABLE;" | sql -L <connectionstr>
令人惊讶的是这不起作用!"SET ECHO ON;"
指令被忽略。但是如果我做了
echo "SET ECHO ON;\n SELECT COLA FROM MYTABLE;" >combined_query.sql
echo @combined_query.sql | sql -L <connectionstr>
- 然后 * 它工作。有没有一种方法可以让
"SET ECHO ON;"
在直接管道中工作,而不需要通过文件绕道?
1条答案
按热度按时间2w2cym1i1#
简短的回答是“不”。来自文档:
ECHO不会影响您以交互方式输入的命令或从操作系统重定向到SQLPlus的命令的显示。
这是SQLPlus文档; SQLcl文档并没有提供太多的细节,但一般来说,它的行为与SQL*Plus相同。