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

mjqavswn  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(95)

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

2w2cym1i1#

简短的回答是“不”。来自文档:
ECHO不会影响您以交互方式输入的命令或从操作系统重定向到SQLPlus的命令的显示。
这是SQL
Plus文档; SQLcl文档并没有提供太多的细节,但一般来说,它的行为与SQL*Plus相同。

相关问题