首页 > 解决方案 > 尽管我将输出假脱机在文件中,oracle 仍显示选择查询的输出

问题描述

我正在使用下面的代码将密码保存在文件中,但在这样做的同时,我也在输出中获取了该密码,这是我想避免的。请建议我们是否有任何方法可以假脱机输出并且不打印它。

set heading off;
spool abc.txt
select password from sys.user$ where username='test';
spool off;

Output:
AH45****mn

标签: oracle

解决方案


将此添加到脚本的顶部:

set termout off

从文档中

要假脱机脚本中的命令生成的输出而不在屏幕上显示输出,请使用SET TERMOUT OFF. SET TERMOUT OFF不影响交互式运行的命令的输出。

SET TERMOUT OFF禁止显示,以便您可以在不显示在屏幕上的情况下从脚本假脱机输出。

如果不需要假脱机到文件和写入终端,SET TERMOUT OFF请在 SQL 脚本中使用以禁用终端输出。

如果您使用工作表中的这些命令从 SQL Developer 运行此命令,通过“运行脚本 (F5)”,那么它将无法termout正确执行该设置。但是如果你将它保存到一个文件然后运行它,它会; 因此,如果您使用命令创建一个文件,例如,your_script.sql那么在工作表中您将拥有:

@your_script

或者

@/path/to/your_script

并用 F5 运行它。

在 SQL*Plus 中,您可以执行相同的操作,@your_script从交互式提示符或直接从命令行运行它(exit如果您这样做,您可能希望添加到脚本的末尾):

sqlplus @your_script

这将提示输入用户名和密码;或者

sqlplus user @your_script

这只会提示输入密码。(或者您可以在命令行上提供密码,但这不是一个好主意。)

您还可以添加-s静默标志:

sqlplus -s -l user @your_script

这将隐藏所有输出,包括应用程序横幅和密码提示 - 它仍会等待您输入密码,只是不会看到提示。如果您这样做,该-l标志很有用;如果您输入错误的密码,它将退出,而不是(默默地)等待您重新输入用户名和密码。


推荐阅读