为了嵌入 Unix shell 脚本,我想执行一组 SQL 命令并随后直接退出 sqlcl。
为此,我成功地使用了 pipeline-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;"
在直接管道中工作而无需通过文件绕道?
简短的回答是“不”。 来自文档:
ECHO 不会影响您以交互方式输入的命令的显示或从操作系统重定向到 SQL*Plus。