How do I execute an Oracle SQL script without sqlplus hanging on me? For an automated task I would very much like to run some SQL scripts and make sure that sqlplus does not hang under any circumstancees, i.e.:


If the script contains any named substitution variable that has to be entered by the user, sqlplus should return with an error instead of prompting for the variable -- I cannot use set define off, as some of these scripts need to accept command line parameters that have to be resolved with &amp;1
The script must not "hang" when it doesn't contain an exit; at the end.

Solved: I think now that I can achieve this by wrapping the sql-script in a secondary "caller script". I.e., the caller script calls the other script with @ and then has a fixed exit; after that. The other script doesn't need an exit that way.
Anything else: If it would require a prompt, it should return with an error.


How can i do this with Oracle (and sqlplus or something else)?
You can do this under Linux/Unix when you embed the SQL commands in a shell script and pipe them into a SQL*Plus instance.