Databases
cancel
Showing results for 
Search instead for 
Did you mean: 

sql command from a command shell

SOLVED
Go to solution

sql command from a command shell

Hello Forum,

I need to run an sql command from a unix shell command line with without loging into sqlplus and I can not use a script.

When I try something like

sqlplus -S login/password select * form dual


I get an error messages

SQL*Plus: Release 10.2.0.2.0 - Production

Copyright (c) 1982, 2005, Oracle. All Rights Reserved.

Usage 1: sqlplus -H | -V

-H Displays the SQL*Plus version and the
usage help.
-V Displays the SQL*Plus version.

Usage 2: sqlplus [ [] [] [] ]

is: [-C ] [-L] [-M ""] [-R ] [-S]

-C Sets the compatibility of affected commands to the
version specified by . The version has
the form "x.y[.z]". For example, -C 10.2.0
-L Attempts to log on just once, instead of
reprompting on error.
-M "" Sets automatic HTML markup of output. The options
have the form:
HTML [ON|OFF] [HEAD text] [BODY text] [TABLE text]
[ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]
-R Sets restricted mode to disable SQL*Plus commands
that interact with the file system. The level can
be 1, 2 or 3. The most restrictive is -R 3 which
disables all user commands interacting with the
file system.
-S Sets silent mode which suppresses the display of
the SQL*Plus banner, prompts, and echoing of
commands.

is: ([/][@] | /)
[AS SYSDBA | AS SYSOPER] | /NOLOG

Specifies the database account username, password and connect
identifier for the database connection. Without a connect
identifier, SQL*Plus connects to the default database.

The AS SYSDBA and AS SYSOPER options are database administration
privileges.

The /NOLOG option starts SQL*Plus without connecting to a
database.

is: @|[.] [ ...]

Runs the specified SQL*Plus script from a web server (URL) or the
local file system (filename.ext) with specified parameters that
will be assigned to substitution variables in the script.

When SQL*Plus starts, and after CONNECT commands, the site profile
(e.g. $ORACLE_HOME/sqlplus/admin/glogin.sql) and the user profile
(e.g. login.sql in the working directory) are run. The files may
contain SQL*Plus commands.

Refer to the SQL*Plus User's Guide and Reference for more information.


############################


Is this even possible?
Can I pass on the select statement without having to encapsulate it on a sql script?

Thanks,

Thanks,
6 REPLIES
Sandman!
Honored Contributor
Solution

Re: sql command from a command shell

sqlplus -S username/password@DB <select * form dual;
EOF
Sandman!
Honored Contributor

Re: sql command from a command shell

Hit the submit button prematurely as here's another way of doing the same thing:

# echo 'select * from dual;' | sqlplus -S login/password
Hein van den Heuvel
Honored Contributor

Re: sql command from a command shell

Try this:


echo "select * form dual" | sqlplus -S login/password


Hein.


Re: sql command from a command shell

Sanman and heuvel,

Both options works and the one that best fit what I need is
echo "select * from dual;"|sqlplus -S login/password@.

Thanks,
Tor-Arne Nostdal
Trusted Contributor

Re: sql command from a command shell

Just be aware of the fact that when you run this comand the user/password is shown in the process list. This could be a security issue.

It would be better if you used the user/password as part of the piped input.

ex.
sqlplus -S <username/password@DB
select * from dual;
EOF

sqlplus -S </ as sysdba
select * from dual;
EOF

For this specific request it is no big danger, but this might be important if you run a task that need some runtime.

/Tor-Arne
I'm trying to become President of the state I'm in...

Re: sql command from a command shell

This is a good point.

thanks Tor-Arne.