如何像使用“SET SQLFORMAT CSV”那样将“SET ECHO ON”添加到通过管道传输到 sqlcl 的 SQL 查询中?

问题描述 投票:0回答:1

为了嵌入 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;"
在直接管道中工作而无需通过文件绕道?

oracle shell pipe sqlplus sqlcl
1个回答
0
投票

简短的回答是“不”。 来自文档

ECHO 不会影响您以交互方式输入的命令的显示或从操作系统重定向到 SQL*Plus。

© www.soinside.com 2019 - 2024. All rights reserved.