Spool Command: Do not output SQL statement to file

Unfortunately SQL Developer doesn't fully honour the set echo off command that would (appear to) solve this in SQL*Plus.

The only workaround I've found for this is to save what you're doing as a script, e.g. test.sql with:

set echo off
spool c:\test.csv 
select /*csv*/ username, user_id, created from all_users;
spool off;

And then from SQL Developer, only have a call to that script:

@test.sql

And run that as a script (F5).

Saving as a script file shouldn't be much of a hardship anyway for anything other than an ad hoc query; and running that with @ instead of opening the script and running it directly is only a bit of a pain.


A bit of searching found the same solution on the SQL Developer forum, and the development team suggest it's intentional behaviour to mimic what SQL*Plus does; you need to run a script with @ there too in order to hide the query text.


My shell script calls the sql file and executes it. The spool output had the SQL query at the beginning followed by the query result.

This did not resolve my problem:

set echo off

This resolved my problem:

set verify off

Just for anyone who stumbles upon this (after 7+ years) ...

This works for me ... adapt it to your way of invoking sqlplus.

sqlplus -s / as sysdba 2>&1 > /dev/null <<EOF
  whenever sqlerror exit sql.sqlcode;
  set echo off 
  set verify off
  set feedback off
  set term off
  set head off
  set pages 1000
  set lines 200

  spool /tmp/whatever.output
  
  ### Your_SQL_statement_here ###
  example: select sysdate from dual;
  example: select * from V\$LOGFILE;

  spool off
EOF

-s flag here is the key to not displaying the SQL statements when runing a script.