35

I tried

select * from users 
save D:\test.sql create;

But SQL plus gives me "no proper ended" How to specify path in oracle sql in windows?

PM 77-1
13.4k21 gold badges73 silver badges118 bronze badges
asked Mar 6, 2013 at 16:58

5 Answers 5

64

Use the spool:

spool myoutputfile.txt
select * from users;
spool off;

Note that this will create myoutputfile.txt in the directory from which you ran SQL*Plus.

If you need to run this from a SQL file (e.g., "tmp.sql") when SQLPlus starts up and output to a file named "output.txt":

tmp.sql:

select * from users;

Command:

sqlplus -s username/password@sid @tmp.sql > output.txt

Mind you, I don't have an Oracle instance in front of me right now, so you might need to do some of your own work to debug what I've written from memory.

answered Mar 6, 2013 at 17:01
Sign up to request clarification or add additional context in comments.

7 Comments

thank you but can I ask where is the spool file myoutputfile.txt locate? Also what about user don't have permission to run spool?
Also how can we specify a path/folder of the output file, especially in Windows?
I've never had luck specifying where the spool is written to except to run sqlplus.exe from the directory where the spool output will go.
I don't understand your question. From SQL*plus, type exactly what I wrote in my solution. You will get output in a file named myoutputfile.txt. If you don't see it where you expected it, perform a search for it. How are you executing SQLPlus? From what directory?
Note that if you do not specify a file extension on the spool file name (like .txt in the example), the extension .lst will be automatically appended.
|
21

Very similar to Marc, only difference I would make would be to spool to a parameter like so:

WHENEVER SQLERROR EXIT 1
SET LINES 32000
SET TERMOUT OFF ECHO OFF NEWP 0 SPA 0 PAGES 0 FEED OFF HEAD OFF TRIMS ON TAB OFF
SET SERVEROUTPUT ON
spool &1
-- Code
spool off
exit

And then to call the SQLPLUS as

sqlplus -s username/password@sid @tmp.sql /tmp/output.txt
answered Mar 6, 2013 at 17:33

2 Comments

Yep. I was gonna add the set pages 0, set trimspool on, etc. But then the question changed and I had to chase down something else! Good suggestions though.
Thanks John, your version returns clean SQL output I was looked for
3
spool "D:\test\test.txt"
select 
 a.ename 
from 
 employee a 
inner join department b 
on 
( 
 a.dept_id = b.dept_id 
) 
; 
spool off 

This query will spool the sql result in D:\test\test.txt

answered Aug 5, 2016 at 8:43

Comments

2

just to make the Answer 2 much easier, you can also define the folder where you can put your saved file

 spool /home/admin/myoutputfile.txt
 select * from table_name;
 spool off;

after that only with nano or vi myoutputfile.txt, you will see all the sql track.

hope is that help :)

answered Nov 6, 2015 at 9:22

Comments

2

Having the same chore on windows 10, and windows server 2012. I found the following solution:

echo quit |sqlplus schemaName/schemaPassword@sid @plsqlScript.sql > outputFile.log

Explanation

echo quit | send the quit command to exit sqlplus after the script completes

sqlplus schemaName/schemaPassword@sid @plsqlScript.sql execute plssql script plsqlScript.sql in schema schemaName with password schemaPassword connecting to SID sid

> outputFile.log redirect sqlplus output to log file outputFile.log

answered Mar 9, 2020 at 15:38

1 Comment

It's better to spool inside the .sql file I think. Redirecting standard output to file may result in unwanted SQL feedback output in your file. Also, you could just quit (or exit) inside the .sql file.

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.